diff --git a/AlainS87_ip_master/commits.json b/AlainS87_ip_master/commits.json index 6d509a1a..15b01faa 100644 --- a/AlainS87_ip_master/commits.json +++ b/AlainS87_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AlainS87":[{"date":"2023-08-23","commitResults":[{"hash":"fb7901d77f2888e3cdf174b38779d702c406ade6","isMergeCommit":false,"messageTitle":"Level0 completed","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"31dbabb9274b99c556d8918e3b1cecf3dfdf6e6a","isMergeCommit":false,"messageTitle":"level1 completed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"b845974c1b9c9d83fa4f0a5fa370be275313891e","isMergeCommit":false,"messageTitle":"level1 rectified","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"c3be1f3657164b383c983138f3acfcdf51378209","isMergeCommit":false,"messageTitle":"level3 completed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"ef14c35c57541e7cbd5b9f99097ac0912fd2fa87","isMergeCommit":false,"messageTitle":"level2 completed","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2c81870e09f0f6325b6ecd3eb021faf6cfa2d8fc","isMergeCommit":false,"messageTitle":"level3 completed","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"b80c10c74e8d8fc973573b6122c3319d109fe591","isMergeCommit":false,"messageTitle":"level 4 completed","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":7}}},{"hash":"15dea815972e60a37bef109177abf6f84d65a9e1","isMergeCommit":false,"messageTitle":"level 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":94}}},{"hash":"8677ed526aca842c57c4a2a4ab6f05c62912c4cd","isMergeCommit":false,"messageTitle":"level 6 completed","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":29}}}]},{"date":"2023-08-27","commitResults":[{"hash":"519665f0c6ebc95d2f7f7cddac8830ac25d3056f","isMergeCommit":false,"messageTitle":"fix the problem in level 6 after using test_ui","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"e43ce9bbb491282a7f18930d287adf91bb1d6f19","isMergeCommit":false,"messageTitle":"modify test-ui tetscase","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"423fec162bc3337256004692886f45ddd49acc03","isMergeCommit":false,"messageTitle":"level 7 completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"edafe6b6e91b939e9665c8a4463d9fbe16ded4dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9f505a090b1741afd56863a57096f4b3edecfa80","isMergeCommit":false,"messageTitle":"level-8 minimal finished","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":40,"deletions":9}}},{"hash":"5ddae9deba583d539a7a36dc0bfc9dccf272a123","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b23b6a1bd7322a3aa34814613a5c8593740d18b","isMergeCommit":false,"messageTitle":"more OOP applications","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":2},"java":{"insertions":317,"deletions":98}}}]},{"date":"2023-08-28","commitResults":[{"hash":"eb7ee36e19a68ee666531b5ff0a7246361f19ee0","isMergeCommit":false,"messageTitle":"package created for alain","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"AlainS87":{"java":497,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"AlainS87":39440.598},"authorDisplayNameMap":{"AlainS87":"CS2103T-W13-3 SU S..ENYI"}} +{"authorDailyContributionsMap":{"AlainS87":[{"date":"2023-08-23","commitResults":[{"hash":"fb7901d77f2888e3cdf174b38779d702c406ade6","isMergeCommit":false,"messageTitle":"Level0 completed","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":10}}},{"hash":"31dbabb9274b99c556d8918e3b1cecf3dfdf6e6a","isMergeCommit":false,"messageTitle":"level1 completed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"b845974c1b9c9d83fa4f0a5fa370be275313891e","isMergeCommit":false,"messageTitle":"level1 rectified","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"c3be1f3657164b383c983138f3acfcdf51378209","isMergeCommit":false,"messageTitle":"level3 completed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"ef14c35c57541e7cbd5b9f99097ac0912fd2fa87","isMergeCommit":false,"messageTitle":"level2 completed","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"2c81870e09f0f6325b6ecd3eb021faf6cfa2d8fc","isMergeCommit":false,"messageTitle":"level3 completed","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":6}}},{"hash":"b80c10c74e8d8fc973573b6122c3319d109fe591","isMergeCommit":false,"messageTitle":"level 4 completed","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":7}}},{"hash":"15dea815972e60a37bef109177abf6f84d65a9e1","isMergeCommit":false,"messageTitle":"level 5 completed","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":94}}},{"hash":"8677ed526aca842c57c4a2a4ab6f05c62912c4cd","isMergeCommit":false,"messageTitle":"level 6 completed","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":29}}}]},{"date":"2023-08-27","commitResults":[{"hash":"519665f0c6ebc95d2f7f7cddac8830ac25d3056f","isMergeCommit":false,"messageTitle":"fix the problem in level 6 after using test_ui","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":4,"deletions":4}}},{"hash":"e43ce9bbb491282a7f18930d287adf91bb1d6f19","isMergeCommit":false,"messageTitle":"modify test-ui tetscase","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"423fec162bc3337256004692886f45ddd49acc03","isMergeCommit":false,"messageTitle":"level 7 completed","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":28,"deletions":1}}},{"hash":"edafe6b6e91b939e9665c8a4463d9fbe16ded4dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"9f505a090b1741afd56863a57096f4b3edecfa80","isMergeCommit":false,"messageTitle":"level-8 minimal finished","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":40,"deletions":9}}},{"hash":"5ddae9deba583d539a7a36dc0bfc9dccf272a123","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0b23b6a1bd7322a3aa34814613a5c8593740d18b","isMergeCommit":false,"messageTitle":"more OOP applications","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":2},"java":{"insertions":317,"deletions":98}}}]},{"date":"2023-08-28","commitResults":[{"hash":"eb7ee36e19a68ee666531b5ff0a7246361f19ee0","isMergeCommit":false,"messageTitle":"package created for alain","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1}}},{"hash":"6a188a77e43fab096cd4c6cb4ea6fdc52ea60755","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"AlainS87":{"java":497,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"AlainS87":39440.598},"authorDisplayNameMap":{"AlainS87":"CS2103T-W13-3 SU S..ENYI"}} diff --git a/Badatprogrammiing_ip_master/authorship.json b/Badatprogrammiing_ip_master/authorship.json index d703260b..5f36d002 100644 --- a/Badatprogrammiing_ip_master/authorship.json +++ b/Badatprogrammiing_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-27"},{"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":"Badatprogrammiing"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":{"Badatprogrammiing":2,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"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":{"Badatprogrammiing":1,"-":41}},{"path":"data/Duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"Badatprogrammiing":1}},{"path":"src/main/java/duke/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public interface Action {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" public boolean execute(TaskList taskList, Storage storage) throws WrongIndexException, EmptyBodyException, InvalidDateException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":6}},{"path":"src/main/java/duke/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class CommandParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" public CommandParser() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" private TimeParser parser \u003d new TimeParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createTodoTask(String[] words) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" for (int i \u003d 1; i \u003c words.length; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" return new ToDoTask(taskName.toString().stripTrailing());","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createEventTask(String[] words) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder startDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder endDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" startDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" endDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" return new EventTask(taskName.toString().stripTrailing(), parser.parseTime(startDate.toString().trim()), parser.parseTime(endDate.toString().trim()));","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createDeadlineTask(String[] words) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder endDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" endDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" return new DeadlineTask(taskName.toString().stripTrailing(), parser.parseTime(endDate.toString().trim()));","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createTask(String[] words) throws EmptyBodyException, InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createTodoTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createEventTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createDeadlineTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Badatprogrammiing"},"content":" public Action parseCommand(String command) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Badatprogrammiing"},"content":" String[] words \u003d command.trim().split(\"\\\\s\");","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Badatprogrammiing"},"content":" if (words[0].equals(\"bye\") \u0026\u0026 words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e false;","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"list\") \u0026\u0026 words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, Storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.listTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"delete\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.deleteTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"mark\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"unmark\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.unmarkedTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Badatprogrammiing"},"content":" } else if ((words[0].equals(\"deadline\") || words[0].equals(\"todo\") || words[0].equals(\"event\"))) {","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(this.createTask(words));","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Badatprogrammiing"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":109}},{"path":"src/main/java/duke/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter saveFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" public DeadlineTask(String taskName, LocalDate endDate) {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" public DeadlineTask(String taskName, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" return \"deadline\" + delimiter + isCompleted + delimiter + taskName()","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" + delimiter + this.endDate.format(this.saveFormatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endDate.format(displayFormatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":33}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-18"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" private final UI ui \u003d new UI();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" private final Storage storage \u003d new Storage(\"./data/Duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private final CommandParser parser \u003d new CommandParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" private final TaskList taskList \u003d new TaskList(storage.loadFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" private void handleUI() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" while (true) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" ui.printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" Action action \u003d parser.parseCommand(command);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" if (!action.execute(taskList, storage)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" ui.printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" ui.bye();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" duke.handleUI();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Badatprogrammiing":38,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" private String msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" DukeException(String msg) {","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" super(msg);","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" this.msg \u003d msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" return msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":16}},{"path":"src/main/java/duke/EmptyBodyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class EmptyBodyException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" EmptyBodyException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":9}},{"path":"src/main/java/duke/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter saveFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" public EventTask(String taskName, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" public EventTask(String taskName, LocalDate startDate, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" return \"event\" + delimiter + isCompleted + delimiter + taskName() + delimiter","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" + this.startDate.format(this.saveFormatter) + delimiter + this.endDate.format(this.saveFormatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startDate.format(this.displayFormatter) + \" to: \"","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" + endDate.format(this.displayFormatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":37}},{"path":"src/main/java/duke/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" InvalidCommandException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":9}},{"path":"src/main/java/duke/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" Invalid date format, enter the dates using: /from dd/MM/yyyy /to dd/MM/yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"Badatprogrammiing":7}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" private TimeParser parser \u003d new TimeParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" public void saveFile(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" for (Task task : tasks.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" fw.write(task.saveData() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" File not found, unable to save\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" public LinkedList\u003cTask\u003e loadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" Scanner scanner \u003d new Scanner(f);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" String[] taskData \u003d s.split(String.valueOf(delimiter), -1);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" boolean isComplete \u003d taskData[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" switch (taskData[0]) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" case \"event\":","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add((new EventTask(taskData[2], parser.parseTime(taskData[3]), parser.parseTime(taskData[4]), isComplete)));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" case \"todo\":","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(new ToDoTask(taskData[2], isComplete));","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(new DeadlineTask(taskData[2], parser.parseTime(taskData[3]), isComplete));","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (IOException | InvalidDateException e2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(f.getAbsolutePath());","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Unable to load/find file, using an empty task list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" return new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":63}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" private String taskName;","lastModifiedDate":"2023-08-18"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" private boolean isCompleted;","lastModifiedDate":"2023-08-18"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-18"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-18"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" public abstract String saveData();","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public void markCompleted() {","lastModifiedDate":"2023-08-18"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-18"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" public void markNotCompleted() {","lastModifiedDate":"2023-08-18"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-18"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" protected boolean isCompleted() {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" return this.isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" protected String taskName() {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" return this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-18"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-18"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[X] \" + taskName;","lastModifiedDate":"2023-08-19"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-18"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[ ] \" + taskName;","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-18"}],"authorContributionMap":{"Badatprogrammiing":44}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" private LinkedList\u003cTask\u003e tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" public TaskList(LinkedList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" public LinkedList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" return this.tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + i + \".\" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" public void deleteTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.remove(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" task.markCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" public void unmarkedTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Badatprogrammiing"},"content":" task.markNotCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":85}},{"path":"src/main/java/duke/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" public TimeParser() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" public LocalDate parseTime(String s) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[dd/MM/yyyy]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" return LocalDate.parse(s, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":18}},{"path":"src/main/java/duke/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" return \"todo\" + delimiter + isCompleted + delimiter + taskName() + delimiter;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":22}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class UI {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" public UI() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" public void printLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Hello! I\u0027m Duke\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" public void bye() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":23}},{"path":"src/main/java/duke/WrongIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"public class WrongIndexException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" Enter a valid index\");","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":8}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" public void loadFile_validFilePathNotEmpty_allFilesLoaded() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" Storage storage \u003d new Storage(\"./src/test/java/duke/StorageTest3Tasks.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e loadedTaskLists \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(0).toString(), \"[T][ ] task\");","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(1).toString(), \"[E][ ] task task (from: 11 Apr 2000 to: 11 Apr 1999)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(2).toString(), \"[D][X] task (by: 11 Apr 2001)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" void loadFile_validFilePathEmpty_emptyList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" Storage storage \u003d new Storage(\"./src/test/java/duke/StorageTestEmpty.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e loadedTaskLists \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.size(), 0);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":26}},{"path":"src/test/java/duke/StorageTest3Tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"todo\u001f0\u001ftask\u001f","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"event\u001f0\u001ftask task\u001f11/04/2000\u001f11/04/1999","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"deadline\u001f1\u001ftask\u001f11/04/2001","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":3}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_validIndex_taskMarkCompleted() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" assertTrue(t.isCompleted());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_leftOutOfBounds_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"0\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_rightOutOfBounds_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"2\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_largeInteger_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"2000000000000000000000000000000000000\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":52}},{"path":"text-ui-test/data/Duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"Badatprogrammiing":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"todo borrow book","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"deadline return book /by 11/04/2000","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"event project meeting /from 11/04/2000 /to 11/04/2000","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"mark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"unmark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"deadline","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"todo","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"event","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"blah","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":"unmark 5000000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"mark -5000000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"mark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"delete 5000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":"delete -500000000","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"delete 10","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"delete 2","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"delete 2","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":"bye","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":23}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"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":"Badatprogrammiing"},"content":"javac -cp ..\\src\\main\\java\\duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"java -classpath ..\\bin duke.Duke \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":{"Badatprogrammiing":2,"-":19}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-27"},{"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":"Badatprogrammiing"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":{"Badatprogrammiing":2,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"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":{"Badatprogrammiing":1,"-":41}},{"path":"data/Duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"Badatprogrammiing":1}},{"path":"src/main/java/duke/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" * Functional interface for an action that takes in a TaskList and Storage object and returns nothing.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"public interface Action {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" public boolean execute(TaskList taskList, Storage storage) throws WrongIndexException, EmptyBodyException, InvalidDateException;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":10}},{"path":"src/main/java/duke/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" * Parses the command given by the user and returns a corresponding action.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"public class CommandParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" public CommandParser() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private TimeParser parser \u003d new TimeParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createTodoTask(String[] words) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" for (int i \u003d 1; i \u003c words.length; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" return new ToDoTask(taskName.toString().stripTrailing());","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createEventTask(String[] words) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder startDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder endDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/from\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/to\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" startDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" endDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" return new EventTask(taskName.toString().stripTrailing(),","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" parser.parseTime(startDate.toString().trim()), parser.parseTime(endDate.toString().trim()));","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createDeadlineTask(String[] words) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder taskName \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" StringBuilder endDate \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length \u0026\u0026 !words[i].equals(\"/by\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" taskName.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" while (i \u003c words.length) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" endDate.append(words[i]).append(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" return new DeadlineTask(taskName.toString().stripTrailing(), parser.parseTime(endDate.toString().trim()));","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" private Task createTask(String[] words) throws EmptyBodyException, InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" throw new EmptyBodyException();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" if (words[0].equals(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createTodoTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createEventTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Badatprogrammiing"},"content":" return this.createDeadlineTask(words);","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Badatprogrammiing"},"content":" * Checks the first word of the input string and returns an Action.","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Badatprogrammiing"},"content":" * @param command input given by the user","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Badatprogrammiing"},"content":" * @return action an action to be executed depending on the first word of command","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Badatprogrammiing"},"content":" * @throws DukeException if input string is invalid","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Badatprogrammiing"},"content":" public Action parseCommand(String command) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Badatprogrammiing"},"content":" String[] words \u003d command.trim().split(\"\\\\s\");","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Badatprogrammiing"},"content":" if (words[0].equals(\"bye\") \u0026\u0026 words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e false;","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"list\") \u0026\u0026 words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, Storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.listTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"delete\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.deleteTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"mark\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"unmark\") \u0026\u0026 words.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.unmarkedTask(words[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"Badatprogrammiing"},"content":" } else if ((words[0].equals(\"deadline\") || words[0].equals(\"todo\") || words[0].equals(\"event\"))) {","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(this.createTask(words));","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"Badatprogrammiing"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"Badatprogrammiing"},"content":" } else if (words[0].equals(\"find\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Badatprogrammiing"},"content":" String expr \u003d command.trim().substring(4).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Badatprogrammiing"},"content":" return (taskList, storage) -\u003e {","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.findTasks(expr);","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Badatprogrammiing"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Badatprogrammiing"},"content":" };","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Badatprogrammiing"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":127}},{"path":"src/main/java/duke/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" * A subclass of Task that has an end date.","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter saveFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" public DeadlineTask(String taskName, LocalDate endDate) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" public DeadlineTask(String taskName, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns the current state of the task in String for saving purposes.","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" * @return the current state of the task in String for saving purposes","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" return \"deadline\" + delimiter + isCompleted + delimiter + taskName()","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" + delimiter + this.endDate.format(this.saveFormatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns a string representation of the object.","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a string representation of the object","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[D]\" + super.toString() + \" (by: \" + endDate.format(displayFormatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":47}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-18"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":" * A bot that allows creation, deletion of tasks.","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" * It also can mark and unmarked tasks as completed.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private final UI ui \u003d new UI();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" private final Storage storage \u003d new Storage(\"./data/Duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" private final CommandParser parser \u003d new CommandParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" private final TaskList taskList \u003d new TaskList(storage.loadFile());","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" private void handleUI() {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" String command \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" while (true) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" ui.printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" Action action \u003d parser.parseCommand(command);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" if (!action.execute(taskList, storage)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" ui.printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" ui.bye();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" duke.handleUI();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Badatprogrammiing":42,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * A superclass exception where all other duke exceptions derived from.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" private String msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" DukeException(String msg) {","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" super(msg);","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" this.msg \u003d msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns a string representation of the object.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a string representation of the object","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" return msg;","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":24}},{"path":"src/main/java/duke/EmptyBodyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Exception when the user does not give a tasks description.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class EmptyBodyException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" EmptyBodyException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" OOPS!!! The description of a task cannot be empty.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":12}},{"path":"src/main/java/duke/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" * A subclass of Task that has a start and end date.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate startDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" private LocalDate endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter saveFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" private DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" public EventTask(String taskName, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" public EventTask(String taskName, LocalDate startDate, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns the current state of the task in String for saving purposes.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" * @return the current state of the task in String for saving purposes","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" return \"event\" + delimiter + isCompleted + delimiter + taskName() + delimiter","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" + this.startDate.format(this.saveFormatter) + delimiter + this.endDate.format(this.saveFormatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns a string representation of the object.","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a string representation of the object","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[E]\" + super.toString() + \" (from: \" + startDate.format(this.displayFormatter) + \" to: \"","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":" + endDate.format(this.displayFormatter) + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":51}},{"path":"src/main/java/duke/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Exception to handle invalid user input.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class InvalidCommandException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" InvalidCommandException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":12}},{"path":"src/main/java/duke/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Exception when user inputs an invalid date format.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" Invalid date format, enter the dates using: /from dd/MM/yyyy /to dd/MM/yyyy or /by dd/MM/yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"Badatprogrammiing":10}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" * A class that loads and save to an external .txt file specified by the path name.","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" private TimeParser parser \u003d new TimeParser();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" * Writes the current state of the task lists into a .txt file","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" * @param tasks a list for tasks to be loaded into","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" public void saveFile(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" for (Task task : tasks.getTaskList()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" fw.write(task.saveData() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" File not found, unable to save\");","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" * Gets the local save .txt file and read it line by line,","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" * parsing the lines into a task and adding that to the list.","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a list that has tasks parsed from a local .txt file","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" public LinkedList\u003cTask\u003e loadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" f.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" Scanner scanner \u003d new Scanner(f);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" String s \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" String[] taskData \u003d s.split(String.valueOf(delimiter), -1);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" boolean isComplete \u003d taskData[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" switch (taskData[0]) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" case \"event\":","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add((new EventTask(taskData[2], parser.parseTime(taskData[3]),","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" parser.parseTime(taskData[4]), isComplete)));","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" case \"todo\":","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(new ToDoTask(taskData[2], isComplete));","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(new DeadlineTask(taskData[2], parser.parseTime(taskData[3]), isComplete));","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Badatprogrammiing"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (IOException | InvalidDateException e2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Badatprogrammiing"},"content":" File f \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(f.getAbsolutePath());","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Unable to load/find file, using an empty task list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Badatprogrammiing"},"content":" return new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":80}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Represents a task that only contains a start date.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" private String taskName;","lastModifiedDate":"2023-08-18"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" private boolean isCompleted;","lastModifiedDate":"2023-08-18"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public Task(String taskName) {","lastModifiedDate":"2023-08-18"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-18"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" public abstract String saveData();","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" * Marks the task as completed","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" public void markCompleted() {","lastModifiedDate":"2023-08-18"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-18"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" * Marks the task as not completed","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" public void markNotCompleted() {","lastModifiedDate":"2023-08-18"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-18"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns the current completion status","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" * @return the current completion status","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" protected boolean isCompleted() {","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" return this.isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" protected String taskName() {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" return this.taskName;","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-18"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns a string representation of the object.","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a string representation of the object","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-18"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" if (isCompleted) {","lastModifiedDate":"2023-08-18"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[X] \" + taskName;","lastModifiedDate":"2023-08-19"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" } else {","lastModifiedDate":"2023-08-18"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[ ] \" + taskName;","lastModifiedDate":"2023-08-19"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-18"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-18"}],"authorContributionMap":{"Badatprogrammiing":63}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" * Represents a list of tasks, and supports methods like add, delete, mark, unmarked.","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" private LinkedList\u003cTask\u003e tasks \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" public TaskList(LinkedList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" public LinkedList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" return this.tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" * List the current state of the tasks list","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" public void listTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + i + \".\" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" * Adds the task to the list","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" * @param task the task to be added","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" * Deletes the task at the specified position","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" * @param index position of task to be deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" * @throws WrongIndexException when index is out of bounds, or too big to parse","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" public void deleteTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.remove(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + \"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Badatprogrammiing"},"content":" * Marks the task as completed at the specified position","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Badatprogrammiing"},"content":" * @param index the position of the tasks to be mark completed","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Badatprogrammiing"},"content":" * @throws WrongIndexException when index is out of bounds, or too big to parse","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Badatprogrammiing"},"content":" task.markCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Badatprogrammiing"},"content":" * Unmarked the task as completed at the specified position.","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Badatprogrammiing"},"content":" * @param index the position of the tasks to be unmarked","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Badatprogrammiing"},"content":" * @throws WrongIndexException when index is out of bounds, or too big to parse","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Badatprogrammiing"},"content":" public void unmarkedTask(String index) throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Badatprogrammiing"},"content":" String regex \u003d \"\\\\d+\";","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Badatprogrammiing"},"content":" if (!index.matches(regex) || Integer.parseInt(index, 10) - 1 \u003c 0","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Badatprogrammiing"},"content":" || Integer.parseInt(index, 10) - 1 \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d Integer.parseInt(index, 10) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"Badatprogrammiing"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"Badatprogrammiing"},"content":" task.markNotCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Badatprogrammiing"},"content":" throw new WrongIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Badatprogrammiing"},"content":" public boolean findTasks(String expr) {","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Badatprogrammiing"},"content":" if (expr.equals(\"\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Badatprogrammiing"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"Badatprogrammiing"},"content":" boolean match \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"Badatprogrammiing"},"content":" int i \u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"Badatprogrammiing"},"content":" Pattern p \u003d Pattern.compile(expr);","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"Badatprogrammiing"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"Badatprogrammiing"},"content":" Matcher m \u003d p.matcher(task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"Badatprogrammiing"},"content":" if (m.find()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" \" + i + \".\" + task);","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"Badatprogrammiing"},"content":" match \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"Badatprogrammiing"},"content":" i +\u003d 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"Badatprogrammiing"},"content":" return match;","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":137}},{"path":"src/main/java/duke/TimeParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" * A parser to parse a String into a LocalDate object.","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"public class TimeParser {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public TimeParser() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" * Parse a string into a LocalDate object","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" * @param s string to be parsed","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" * @return LocalDate","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" * @throws InvalidDateException when String is not in dd/MM/yyyy","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public LocalDate parseTime(String s) throws InvalidDateException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[dd/MM/yyyy]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" return LocalDate.parse(s, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" throw new InvalidDateException();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":28}},{"path":"src/main/java/duke/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Represents a task that only has a task name.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName);","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns the current state of the task in String for saving purposes.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" * @return the current state of the task in String for saving purposes","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" public String saveData() {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" char delimiter \u003d 31;","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" String isCompleted \u003d isCompleted() ? \"1\" : \"0\";","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" return \"todo\" + delimiter + isCompleted + delimiter + taskName() + delimiter;","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" * Returns a string representation of the object.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" * @return a string representation of the object","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-19"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":37}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Responsible for the miscellaneous console outputs.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class UI {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" public UI() {}","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" * Prints a divider line.","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" public void printLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" * Greets the user.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Hello! I\u0027m Duke\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" * Says bye to the user.","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":" public void bye() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" printLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":35}},{"path":"src/main/java/duke/WrongIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":" * Occurs when index is out of bounds or too big for a task operation.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"public class WrongIndexException extends DukeException {","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException() {","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":" super(\" Enter a valid index\");","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":11}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" public void loadFile_validFilePathNotEmpty_allFilesLoaded() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" Storage storage \u003d new Storage(\"./src/test/java/duke/StorageTest3Tasks.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e loadedTaskLists \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(0).toString(), \"[T][ ] task\");","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(1).toString(), \"[E][ ] task task (from: 11 Apr 2000 to: 11 Apr 1999)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.get(2).toString(), \"[D][X] task (by: 11 Apr 2001)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" void loadFile_validFilePathEmpty_emptyList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" Storage storage \u003d new Storage(\"./src/test/java/duke/StorageTestEmpty.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e loadedTaskLists \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals(loadedTaskLists.size(), 0);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":26}},{"path":"src/test/java/duke/StorageTest3Tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"todo\u001f0\u001ftask\u001f","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"event\u001f0\u001ftask task\u001f11/04/2000\u001f11/04/1999","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"deadline\u001f1\u001ftask\u001f11/04/2001","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":3}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"import java.util.LinkedList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_validIndex_taskMarkCompleted() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":" assertTrue(t.isCompleted());","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_leftOutOfBounds_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"0\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_rightOutOfBounds_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.addTask(t);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"2\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Badatprogrammiing"},"content":" public void markTask_largeInteger_exceptionThrown() throws WrongIndexException {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Badatprogrammiing"},"content":" WrongIndexException e \u003d assertThrows(WrongIndexException.class, () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(new LinkedList\u003c\u003e());","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Badatprogrammiing"},"content":" taskList.markTask(\"2000000000000000000000000000000000000\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Badatprogrammiing"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Badatprogrammiing"},"content":" assertEquals( \" Enter a valid index\", e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Badatprogrammiing"},"content":" void findTask_emptyString_false() {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1 name2\");","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e lists \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Badatprogrammiing"},"content":" lists.add(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(lists);","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Badatprogrammiing"},"content":" assertFalse(taskList.findTasks(\"\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Badatprogrammiing"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Badatprogrammiing"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Badatprogrammiing"},"content":" void findTask_validString_true() {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Badatprogrammiing"},"content":" Task t \u003d new ToDoTask(\"name1 name2\");","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Badatprogrammiing"},"content":" LinkedList\u003cTask\u003e lists \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Badatprogrammiing"},"content":" lists.add(t);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Badatprogrammiing"},"content":" TaskList taskList \u003d new TaskList(lists);","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Badatprogrammiing"},"content":" assertTrue(taskList.findTasks(\"name1 \"));","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Badatprogrammiing"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Badatprogrammiing"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Badatprogrammiing":70}},{"path":"text-ui-test/data/Duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"todo\u001f0\u001fborrow book\u001f","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Badatprogrammiing":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Badatprogrammiing"},"content":"todo borrow book","lastModifiedDate":"2023-08-19"},{"lineNumber":2,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"Badatprogrammiing"},"content":"deadline return book /by 11/04/2000","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Badatprogrammiing"},"content":"event project meeting /from 11/04/2000 /to 11/04/2000","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Badatprogrammiing"},"content":"mark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Badatprogrammiing"},"content":"unmark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"deadline","lastModifiedDate":"2023-08-19"},{"lineNumber":9,"author":{"gitId":"Badatprogrammiing"},"content":"todo","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"Badatprogrammiing"},"content":"event","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Badatprogrammiing"},"content":"blah","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"Badatprogrammiing"},"content":"unmark 5000000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"Badatprogrammiing"},"content":"mark -5000000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Badatprogrammiing"},"content":"mark 2","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"Badatprogrammiing"},"content":"delete 5000000000","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"Badatprogrammiing"},"content":"delete -500000000","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"Badatprogrammiing"},"content":"delete 10","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"delete 2","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"Badatprogrammiing"},"content":"delete 2","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"Badatprogrammiing"},"content":"list","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"Badatprogrammiing"},"content":"bye","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"Badatprogrammiing":23}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"Badatprogrammiing"},"content":"if exist data\\Duke.txt del data\\Duke.txt","lastModifiedDate":"2023-08-28"},{"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":"Badatprogrammiing"},"content":"javac -cp ..\\src\\main\\java\\duke -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"Badatprogrammiing"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Badatprogrammiing":3,"-":19}}] diff --git a/Badatprogrammiing_ip_master/commits.json b/Badatprogrammiing_ip_master/commits.json index 4ed9211a..296658cf 100644 --- a/Badatprogrammiing_ip_master/commits.json +++ b/Badatprogrammiing_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Badatprogrammiing":[{"date":"2023-08-18","commitResults":[{"hash":"88eedfca312ed895f16931c8e9b35f0324ad76c2","isMergeCommit":false,"messageTitle":"Add Rename, Greet, Exit features","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"8181dc6f94ab8b1beb54748b970dc84411d789f2","isMergeCommit":false,"messageTitle":"Add Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"00076ca5c349721353042bfeffb90a00fce1cea9","isMergeCommit":false,"messageTitle":"Add List and Add task feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}},{"hash":"5a712a714df93cf937323fc9f999c87f03ddb44c","isMergeCommit":false,"messageTitle":"Added Mark, Unmark task features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":5}}}]},{"date":"2023-08-19","commitResults":[{"hash":"6c2febcfa5078298e5741bb68da463562d198e6b","isMergeCommit":false,"messageTitle":"Add Todo, Event, Deadline Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":45}}},{"hash":"080c83fe9cfedfe8e42b0f6141090fe958d220ac","isMergeCommit":false,"messageTitle":"Add automated ui tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":9,"deletions":9}}},{"hash":"d39b543669a2bd73be270e6a594999bfca874894","isMergeCommit":false,"messageTitle":"Add error handling using exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":52,"deletions":16}}},{"hash":"d61ed09d2a87e1d202fd173776af7918918d8f50","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"30f3628f01392e66b8330263fa88cf34b5e5aa6d","isMergeCommit":false,"messageTitle":"Seperate various task creations in createTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":34}}}]},{"date":"2023-08-26","commitResults":[{"hash":"3660f3d39cafbad158a56a3bb0b092dfb265dba3","isMergeCommit":false,"messageTitle":"Add local save and load when tasks changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":7}}},{"hash":"912bf6d9aca3f5cf90006ed99691d3db340035e7","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"d18a573e40db5f43f7e76ca3c82f27d648274e6d","isMergeCommit":false,"messageTitle":"Covert dates from String to LocalDate","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":47,"deletions":25}}},{"hash":"2bfa2d25cec6edfbf3bcc431e7a454b31f69ab54","isMergeCommit":false,"messageTitle":"Add error handling for invalid dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b203f37e6f468dd10c4d96484236ca2c96367751","isMergeCommit":false,"messageTitle":"Change invalid date error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"dae16bd50ed4bf5b780c72b3edca0a136ebed0fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"d0f6b192cfb57380cc563e5a2da9d724cd8b7584","isMergeCommit":false,"messageTitle":"Refactor code into different classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":326,"deletions":10}}},{"hash":"858e7df7a060f13f653ec9680cae56188f7c7879","isMergeCommit":false,"messageTitle":"Move code into duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":37},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"73baf928ceadcce14f005d7c2d18e566e721dd24","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2a570d2891f26b2224a9aadc2ae26f65553f3860","isMergeCommit":false,"messageTitle":"Add junit test cases","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":3,"deletions":0},"java":{"insertions":94,"deletions":262}}},{"hash":"44f6807dd777e1a3f0159ffc102651a4bd8d7e06","isMergeCommit":false,"messageTitle":"Update storage for creation of .jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":10}}},{"hash":"00f39a5d9fad167cb3fa0ff52483bf925f6f044a","isMergeCommit":false,"messageTitle":"Change invalid dead error msg","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Badatprogrammiing":{"java":605,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":1,"txt":28}},"authorContributionVariance":{"Badatprogrammiing":68749.695},"authorDisplayNameMap":{"Badatprogrammiing":"CS2103T-T12-3 FONG..ENCE"}} +{"authorDailyContributionsMap":{"Badatprogrammiing":[{"date":"2023-08-18","commitResults":[{"hash":"88eedfca312ed895f16931c8e9b35f0324ad76c2","isMergeCommit":false,"messageTitle":"Add Rename, Greet, Exit features","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"8181dc6f94ab8b1beb54748b970dc84411d789f2","isMergeCommit":false,"messageTitle":"Add Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":6}}},{"hash":"00076ca5c349721353042bfeffb90a00fce1cea9","isMergeCommit":false,"messageTitle":"Add List and Add task feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":3}}},{"hash":"5a712a714df93cf937323fc9f999c87f03ddb44c","isMergeCommit":false,"messageTitle":"Added Mark, Unmark task features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":5}}}]},{"date":"2023-08-19","commitResults":[{"hash":"6c2febcfa5078298e5741bb68da463562d198e6b","isMergeCommit":false,"messageTitle":"Add Todo, Event, Deadline Tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":45}}},{"hash":"080c83fe9cfedfe8e42b0f6141090fe958d220ac","isMergeCommit":false,"messageTitle":"Add automated ui tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":9,"deletions":9}}},{"hash":"d39b543669a2bd73be270e6a594999bfca874894","isMergeCommit":false,"messageTitle":"Add error handling using exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":1},"java":{"insertions":52,"deletions":16}}},{"hash":"d61ed09d2a87e1d202fd173776af7918918d8f50","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"30f3628f01392e66b8330263fa88cf34b5e5aa6d","isMergeCommit":false,"messageTitle":"Seperate various task creations in createTask method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":34}}}]},{"date":"2023-08-26","commitResults":[{"hash":"3660f3d39cafbad158a56a3bb0b092dfb265dba3","isMergeCommit":false,"messageTitle":"Add local save and load when tasks changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":109,"deletions":7}}},{"hash":"912bf6d9aca3f5cf90006ed99691d3db340035e7","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"d18a573e40db5f43f7e76ca3c82f27d648274e6d","isMergeCommit":false,"messageTitle":"Covert dates from String to LocalDate","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":47,"deletions":25}}},{"hash":"2bfa2d25cec6edfbf3bcc431e7a454b31f69ab54","isMergeCommit":false,"messageTitle":"Add error handling for invalid dates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"b203f37e6f468dd10c4d96484236ca2c96367751","isMergeCommit":false,"messageTitle":"Change invalid date error message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"dae16bd50ed4bf5b780c72b3edca0a136ebed0fc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"d0f6b192cfb57380cc563e5a2da9d724cd8b7584","isMergeCommit":false,"messageTitle":"Refactor code into different classes","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":326,"deletions":10}}},{"hash":"858e7df7a060f13f653ec9680cae56188f7c7879","isMergeCommit":false,"messageTitle":"Move code into duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":37},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}},{"hash":"73baf928ceadcce14f005d7c2d18e566e721dd24","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/nus-cs2103-AY2324S1/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"2a570d2891f26b2224a9aadc2ae26f65553f3860","isMergeCommit":false,"messageTitle":"Add junit test cases","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":3,"deletions":0},"java":{"insertions":94,"deletions":262}}},{"hash":"44f6807dd777e1a3f0159ffc102651a4bd8d7e06","isMergeCommit":false,"messageTitle":"Update storage for creation of .jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":7,"deletions":10}}},{"hash":"00f39a5d9fad167cb3fa0ff52483bf925f6f044a","isMergeCommit":false,"messageTitle":"Change invalid dead error msg","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a9eb8fdb52b27c5dbfe4985bd7fc50595a0b3982","isMergeCommit":false,"messageTitle":"Add JavaDocs for all public methods and classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":0}}},{"hash":"3bef67d7dca9091ab08efd8f88f68018da6fb00b","isMergeCommit":false,"messageTitle":"Change code to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"a81698431c6aabaf1fb079b2bd8c4c2f2e294a3f","isMergeCommit":false,"messageTitle":"Add support and test cases for find function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":46,"deletions":1},"bat":{"insertions":1,"deletions":0}}},{"hash":"f77693268c6e5a1e7d793a5931f84aade58b218c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"fbd5957c58de52e295c74e69aab534d823bc054f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"210d13d5de24c380aa844e33a253325d39020ec8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Badatprogrammiing":{"java":822,"md":2,"fxml":0,"sh":0,"bat":3,"gradle":1,"txt":28}},"authorContributionVariance":{"Badatprogrammiing":87894.234},"authorDisplayNameMap":{"Badatprogrammiing":"CS2103T-T12-3 FONG..ENCE"}} diff --git a/Bearypop_ip_master/authorship.json b/Bearypop_ip_master/authorship.json index 8bab2617..01a07a46 100644 --- a/Bearypop_ip_master/authorship.json +++ b/Bearypop_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" String name \u003d \"Beary\";","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" System.out.println(String.format(\"Hello! I\u0027m %s\\nWhat can I do for you?\", name));","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":" String taskMessage \u003d command;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" // check for multiple words in command","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" if (words.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":" command \u003d words[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":" Task currentTask \u003d tasks.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":" boolean done \u003d currentTask.getDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":" System.out.println((i + 1) + \".\" + currentTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":41,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Bearypop"},"content":" tasks.get(taskNumber - 1).markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Bearypop"},"content":" tasks.get(taskNumber - 1).markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":55,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":61,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":62,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"Bearypop"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":66,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"Bearypop"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"The selected task does not exist.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":70,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":71,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":73,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"Bearypop"},"content":" int startIndex;","lastModifiedDate":"2023-08-25"},{"lineNumber":75,"author":{"gitId":"Bearypop"},"content":" String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"Bearypop"},"content":" Task newTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"Bearypop"},"content":" switch (command) {","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"Bearypop"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"Bearypop"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"Bearypop"},"content":" throw (new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\"));","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 5;","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex);","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"Bearypop"},"content":" } catch (DukeException emptyDescription) {","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"Bearypop"},"content":" System.out.println(emptyDescription.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"Bearypop"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":96,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 9;","lastModifiedDate":"2023-08-25"},{"lineNumber":97,"author":{"gitId":"Bearypop"},"content":" int slashIndex \u003d taskMessage.indexOf(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex, slashIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"Bearypop"},"content":" String by \u003d taskMessage.substring(slashIndex + 4);","lastModifiedDate":"2023-08-25"},{"lineNumber":100,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Bearypop"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 6;","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Bearypop"},"content":" int fromIndex \u003d taskMessage.indexOf(\"/from\");","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Bearypop"},"content":" int toIndex \u003d taskMessage.indexOf(\"/to\");","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex, fromIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"Bearypop"},"content":" String start \u003d taskMessage.substring(fromIndex+6, toIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"Bearypop"},"content":" String end \u003d taskMessage.substring(toIndex+4);","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"Bearypop"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"Bearypop"},"content":" throw(new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"));","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"Bearypop"},"content":" } catch (DukeException invalidCommand) {","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"Bearypop"},"content":" System.out.println(invalidCommand.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":127,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"Bearypop"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"Bearypop"},"content":" public static void printLine() {","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Bearypop":133,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" protected String start;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" protected String end;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" private String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" private Boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" return this.description;","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":" return this.done;","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" return (done ? \"[X] \" : \"[ ] \") + this.getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Bearypop":31}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"mark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"mark 2","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"unmark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":10}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" protected String byDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" this.by \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter byFormatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" this.byDate \u003d this.by.format(byFormatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" public Deadline(String description, String by, Boolean other) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" this.by \u003d LocalDate.parse(by, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" this.byDate \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.byDate + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":28}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"import javax.management.openmbean.OpenMBeanAttributeInfo;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" String name \u003d \"Beary\";","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" String filepath \u003d \"data/tasks.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" tasks \u003d readFile(filepath);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" System.out.println(String.format(\"Hello! I\u0027m %s\\nWhat can I do for you?\", name));","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":" String taskMessage \u003d command;","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":" // check for multiple words in command","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":" String[] words \u003d command.split(\" \");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":" if (words.length \u003e 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Bearypop"},"content":" command \u003d words[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Bearypop"},"content":" writeToFile(tasks, filepath);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"Bearypop"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Something went wrong: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Bearypop"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Bearypop"},"content":" Task currentTask \u003d tasks.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Bearypop"},"content":" boolean done \u003d currentTask.getDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Bearypop"},"content":" System.out.println((i + 1) + \".\" + currentTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":54,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":60,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Bearypop"},"content":" tasks.get(taskNumber - 1).markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Bearypop"},"content":" tasks.get(taskNumber - 1).markUndone();","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":74,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"Bearypop"},"content":" if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"Bearypop"},"content":" int taskNumber \u003d Integer.parseInt(words[1]);","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"Bearypop"},"content":" System.out.println(tasks.get(taskNumber - 1));","lastModifiedDate":"2023-08-25"},{"lineNumber":82,"author":{"gitId":"Bearypop"},"content":" tasks.remove(taskNumber - 1);","lastModifiedDate":"2023-08-25"},{"lineNumber":83,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":85,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":86,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":87,"author":{"gitId":"Bearypop"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"The selected task does not exist.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Bearypop"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Bearypop"},"content":" int startIndex;","lastModifiedDate":"2023-08-25"},{"lineNumber":101,"author":{"gitId":"Bearypop"},"content":" String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"Bearypop"},"content":" Task newTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"Bearypop"},"content":" switch (command) {","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"Bearypop"},"content":" case \"todo\":","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"Bearypop"},"content":" if (words.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"Bearypop"},"content":" throw (new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\"));","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 5;","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex);","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"Bearypop"},"content":" } catch (DukeException emptyDescription) {","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"Bearypop"},"content":" System.out.println(emptyDescription.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"Bearypop"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 9;","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"Bearypop"},"content":" int slashIndex \u003d taskMessage.indexOf(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":124,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex, slashIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":125,"author":{"gitId":"Bearypop"},"content":" String by \u003d taskMessage.substring(slashIndex + 4);","lastModifiedDate":"2023-08-25"},{"lineNumber":126,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-25"},{"lineNumber":129,"author":{"gitId":"Bearypop"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Invalid date format\");","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":137,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":138,"author":{"gitId":"Bearypop"},"content":" case \"event\":","lastModifiedDate":"2023-08-25"},{"lineNumber":139,"author":{"gitId":"Bearypop"},"content":" startIndex \u003d 6;","lastModifiedDate":"2023-08-25"},{"lineNumber":140,"author":{"gitId":"Bearypop"},"content":" int fromIndex \u003d taskMessage.indexOf(\"/from\");","lastModifiedDate":"2023-08-25"},{"lineNumber":141,"author":{"gitId":"Bearypop"},"content":" int toIndex \u003d taskMessage.indexOf(\"/to\");","lastModifiedDate":"2023-08-25"},{"lineNumber":142,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":143,"author":{"gitId":"Bearypop"},"content":" description \u003d taskMessage.substring(startIndex, fromIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"Bearypop"},"content":" String start \u003d taskMessage.substring(fromIndex+6, toIndex-1);","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"Bearypop"},"content":" String end \u003d taskMessage.substring(toIndex+4);","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-25"},{"lineNumber":149,"author":{"gitId":"Bearypop"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Invalid date format\");","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"Bearypop"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":155,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-25"},{"lineNumber":156,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":157,"author":{"gitId":"Bearypop"},"content":" default:","lastModifiedDate":"2023-08-25"},{"lineNumber":158,"author":{"gitId":"Bearypop"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":159,"author":{"gitId":"Bearypop"},"content":" throw(new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\"));","lastModifiedDate":"2023-08-25"},{"lineNumber":160,"author":{"gitId":"Bearypop"},"content":" } catch (DukeException invalidCommand) {","lastModifiedDate":"2023-08-25"},{"lineNumber":161,"author":{"gitId":"Bearypop"},"content":" System.out.println(invalidCommand.getMessage());","lastModifiedDate":"2023-08-25"},{"lineNumber":162,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":163,"author":{"gitId":"Bearypop"},"content":" continue;","lastModifiedDate":"2023-08-25"},{"lineNumber":164,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":165,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":166,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":167,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-25"},{"lineNumber":168,"author":{"gitId":"Bearypop"},"content":" System.out.println(newTask);","lastModifiedDate":"2023-08-25"},{"lineNumber":169,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"Bearypop"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"Invalid command\");","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"Bearypop"},"content":" printLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"Bearypop"},"content":" public static Task constructTaskFromFile(String line) {","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"Bearypop"},"content":" String type \u003d line.substring(1, 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"Bearypop"},"content":" String doneString \u003d line.substring(4, 5);","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"Bearypop"},"content":" String text \u003d line.substring(7);","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"Bearypop"},"content":" String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"Bearypop"},"content":" Task newTask \u003d new Task(\"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"Bearypop"},"content":" switch (type) {","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"Bearypop"},"content":" case \"T\":","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"Bearypop"},"content":" description \u003d text;","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new ToDo(text);","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":191,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"Bearypop"},"content":" case \"D\":","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"Bearypop"},"content":" int OpenBracketIndex \u003d text.indexOf(\"(by: \");","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"Bearypop"},"content":" description \u003d text.substring(0, OpenBracketIndex -1);","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"Bearypop"},"content":" String by \u003d text.substring(OpenBracketIndex + 5, text.length()-1);","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Deadline(description, by, true);","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"Bearypop"},"content":" case \"E\":","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"Bearypop"},"content":" int fromIndex \u003d text.indexOf(\"(from: \");","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"Bearypop"},"content":" int toIndex \u003d text.indexOf(\"to: \");","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"Bearypop"},"content":" description \u003d text.substring(0, fromIndex-1);","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"Bearypop"},"content":" String from \u003d text.substring(fromIndex+7, toIndex-1);","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"Bearypop"},"content":" String to \u003d text.substring(toIndex+4, text.length()-1);","lastModifiedDate":"2023-08-28"},{"lineNumber":206,"author":{"gitId":"Bearypop"},"content":" newTask \u003d new Event(description, from, to, true);","lastModifiedDate":"2023-08-28"},{"lineNumber":207,"author":{"gitId":"Bearypop"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":208,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":209,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":210,"author":{"gitId":"Bearypop"},"content":" boolean done \u003d doneString.equals(\"X\");","lastModifiedDate":"2023-08-28"},{"lineNumber":211,"author":{"gitId":"Bearypop"},"content":" newTask.setDone(done);","lastModifiedDate":"2023-08-28"},{"lineNumber":212,"author":{"gitId":"Bearypop"},"content":" return newTask;","lastModifiedDate":"2023-08-28"},{"lineNumber":213,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":214,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":215,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":216,"author":{"gitId":"Bearypop"},"content":" public static ArrayList\u003cTask\u003e readFile(String filepath) throws FileNotFoundException {","lastModifiedDate":"2023-08-28"},{"lineNumber":217,"author":{"gitId":"Bearypop"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2023-08-28"},{"lineNumber":218,"author":{"gitId":"Bearypop"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-28"},{"lineNumber":219,"author":{"gitId":"Bearypop"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":220,"author":{"gitId":"Bearypop"},"content":" while (fileScanner.hasNext()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":221,"author":{"gitId":"Bearypop"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":222,"author":{"gitId":"Bearypop"},"content":" tasks.add(constructTaskFromFile(line));","lastModifiedDate":"2023-08-28"},{"lineNumber":223,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":224,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":225,"author":{"gitId":"Bearypop"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":226,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":227,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":228,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":229,"author":{"gitId":"Bearypop"},"content":" public static void writeToFile(ArrayList\u003cTask\u003e tasks, String filepath) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":230,"author":{"gitId":"Bearypop"},"content":" // create data folder if it does not exist","lastModifiedDate":"2023-08-28"},{"lineNumber":231,"author":{"gitId":"Bearypop"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2023-08-28"},{"lineNumber":232,"author":{"gitId":"Bearypop"},"content":" System.out.println(System.getProperty(\"user.dir\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":233,"author":{"gitId":"Bearypop"},"content":" if (!file.getParentFile().exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":234,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"FILE does not exists\");","lastModifiedDate":"2023-08-28"},{"lineNumber":235,"author":{"gitId":"Bearypop"},"content":" file.getParentFile().mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":236,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":237,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":238,"author":{"gitId":"Bearypop"},"content":" FileWriter fileWriter \u003d new FileWriter(filepath);","lastModifiedDate":"2023-08-28"},{"lineNumber":239,"author":{"gitId":"Bearypop"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":240,"author":{"gitId":"Bearypop"},"content":" String line \u003d task.toString() + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":241,"author":{"gitId":"Bearypop"},"content":" fileWriter.write(line);","lastModifiedDate":"2023-08-28"},{"lineNumber":242,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":243,"author":{"gitId":"Bearypop"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":244,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":245,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":246,"author":{"gitId":"Bearypop"},"content":" public static void printLine() {","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"Bearypop"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":249,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Bearypop":245,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" super(message);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" protected LocalDate start;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" protected LocalDate end;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" this.start \u003d LocalDate.parse(start, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" this.end \u003d LocalDate.parse(end, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":" public Event(String description, String start, String end, boolean other) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" this.start \u003d LocalDate.parse(start, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" this.end \u003d LocalDate.parse(end, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":" private String getDateString(LocalDate date) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" return date.format(formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getDateString(start) +","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":" \" to: \" + this.getDateString(end) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":33}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" private String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" private Boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Bearypop"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Bearypop"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Bearypop"},"content":" public void setDone(boolean done) {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Bearypop"},"content":" this.done \u003d done;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Bearypop"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"Bearypop"},"content":" return this.description;","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Bearypop"},"content":" public boolean getDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Bearypop"},"content":" return this.done;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":30,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":31,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"Bearypop"},"content":" return (done ? \"[X] \" : \"[ ] \") + this.getDescription();","lastModifiedDate":"2023-08-25"},{"lineNumber":33,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Bearypop":35}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"}","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"Bearypop"},"content":"","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Bearypop"},"content":"todo borrow book","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"Bearypop"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"Bearypop"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"Bearypop"},"content":"mark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"Bearypop"},"content":"mark 2","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"Bearypop"},"content":"unmark 1","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"Bearypop"},"content":"list","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"Bearypop"},"content":"bye","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"Bearypop":10}}] diff --git a/Bearypop_ip_master/commits.json b/Bearypop_ip_master/commits.json index 712527dd..3373edc6 100644 --- a/Bearypop_ip_master/commits.json +++ b/Bearypop_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Bearypop":[{"date":"2023-08-23","commitResults":[{"hash":"236774f05ecd366202e89780ff28460247045a67","isMergeCommit":false,"messageTitle":"Added Rename, Greet, Exit feature","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"71650f6703a1f11b25bf97a39f25a2b214c7a54d","isMergeCommit":false,"messageTitle":"Added Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"71f36c58af4a6046c4418d36acab76139bdbcf49","isMergeCommit":false,"messageTitle":"Added Add and List feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"9cd513bd3e638077f9853c1a0716878cd1de4658","isMergeCommit":false,"messageTitle":"Add Mark as Done feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2023-08-25","commitResults":[{"hash":"bebf43eae1f447e2a696a8bfba337f85db9b7bb6","isMergeCommit":false,"messageTitle":"Add ToDos, Events, Deadlines feature","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":10}}},{"hash":"45e4a9107549d4a87d406bac4e5a084d0521ff70","isMergeCommit":false,"messageTitle":"Create test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"9e4764006109a5ed83ab78ec3debe996c997eb60","isMergeCommit":false,"messageTitle":"Add exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":22}}},{"hash":"571cf9a3aca12d2a90012ef21ee6d80412a9ddfa","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"Bearypop":{"java":211,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"Bearypop":4165.1875},"authorDisplayNameMap":{"Bearypop":"CS2103T-F12-2 LOO ..EONG"}} +{"authorDailyContributionsMap":{"Bearypop":[{"date":"2023-08-23","commitResults":[{"hash":"236774f05ecd366202e89780ff28460247045a67","isMergeCommit":false,"messageTitle":"Added Rename, Greet, Exit feature","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"71650f6703a1f11b25bf97a39f25a2b214c7a54d","isMergeCommit":false,"messageTitle":"Added Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}}]},{"date":"2023-08-24","commitResults":[{"hash":"71f36c58af4a6046c4418d36acab76139bdbcf49","isMergeCommit":false,"messageTitle":"Added Add and List feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"9cd513bd3e638077f9853c1a0716878cd1de4658","isMergeCommit":false,"messageTitle":"Add Mark as Done feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}}]},{"date":"2023-08-25","commitResults":[{"hash":"bebf43eae1f447e2a696a8bfba337f85db9b7bb6","isMergeCommit":false,"messageTitle":"Add ToDos, Events, Deadlines feature","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":10}}},{"hash":"45e4a9107549d4a87d406bac4e5a084d0521ff70","isMergeCommit":false,"messageTitle":"Create test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"9e4764006109a5ed83ab78ec3debe996c997eb60","isMergeCommit":false,"messageTitle":"Add exception handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":22}}},{"hash":"571cf9a3aca12d2a90012ef21ee6d80412a9ddfa","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"9ee5efac3d8f84f17e475b2e547e73a79587fe85","isMergeCommit":false,"messageTitle":"Add file write and read methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":4}}},{"hash":"5bd2fa56ab37c01acdfdfac467d10bb7aba18970","isMergeCommit":false,"messageTitle":"Add Save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"f9dc255d9f697b25c113d0767419f94c7a10e2cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6a51e727190420fd29ad0dd7c93d107b194dd75e","isMergeCommit":false,"messageTitle":"Add Date feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":60}}},{"hash":"a23b17618f2098b592df1bed73b128f51f088d1e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Bearypop":{"java":358,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"Bearypop":8423.868},"authorDisplayNameMap":{"Bearypop":"CS2103T-F12-2 LOO ..EONG"}} diff --git a/Blizzeracz_ip_master/authorship.json b/Blizzeracz_ip_master/authorship.json index 2e2af6ef..20f08af2 100644 --- a/Blizzeracz_ip_master/authorship.json +++ b/Blizzeracz_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" public DeadlineTask(String description, String byDate, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" setDeadlineByDate(byDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" throw new DateTimeException(\"Please input your date in the YYYY-MM-DD format!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" public static DeadlineTask parseDeadline(String taskDetails, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" if (!taskDetails.contains(\"by:\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" throw new RuntimeException(\"Error! Remember to include \u0027by:\u0027 after the deadline command!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" String[] details \u003d taskDetails.split(\"by:\", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d details[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" String by \u003d details[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" by \u003d by.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" return new DeadlineTask(description, by, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" public void setDeadlineByDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" this.byDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedDeadline() {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" return byDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.byDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getFormattedDeadline() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":49}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" public static void start() {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" String intro \u003d \"Hi! This is your AI assistant LoyBoy!\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" String question \u003d \"What can I do for you today?\";","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(intro + question);","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" Duke.loadTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" while (true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" String outro \u003d \"I wish you a pleasant day ahead, goodbye!\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(outro);","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" listTask();","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" } else if (command.split(\" \", 2).length \u003e 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" if (Duke.checkMark(command) \u003d\u003d false) {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" addTask(command);","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Error! \" + e.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" addTask(command);","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Error! \" + e.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" scanner.close();","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" Duke.saveTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" private static void loadTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" tasks \u003d storage.loadTask();","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Error! Cannot load task from data file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Blizzeracz"},"content":" private static void saveTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Blizzeracz"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Blizzeracz"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Blizzeracz"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Error! Cannot save task to data file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"Blizzeracz"},"content":" public static boolean checkMark(String command) throws RuntimeException {","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"Blizzeracz"},"content":" String[] parts \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":69,"author":{"gitId":"Blizzeracz"},"content":" if (parts[0].equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":70,"author":{"gitId":"Blizzeracz"},"content":" tasks.get(Integer.valueOf(parts[1]) - 1).markTask();","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"Blizzeracz"},"content":" return true;","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"Blizzeracz"},"content":" } else if (parts[0].equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"Blizzeracz"},"content":" tasks.get(Integer.valueOf(parts[1]) - 1).unmarkTask();","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"Blizzeracz"},"content":" return true;","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"Blizzeracz"},"content":" } else if (parts[0].equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"Blizzeracz"},"content":" Task removedTask \u003d tasks.remove(Integer.valueOf(parts[1]) - 1);","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Yes Sir. I\u0027ve removed the following task\\n\" + removedTask + \"\\nNow you\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"Blizzeracz"},"content":" \" have \" + tasks.size() + \" task(s) in the list!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Blizzeracz"},"content":" return true;","lastModifiedDate":"2023-08-21"},{"lineNumber":80,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"Blizzeracz"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":82,"author":{"gitId":"Blizzeracz"},"content":" throw new RuntimeException(\"The task does not exist in this list! Pick a number where a task exist!\");","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"Blizzeracz"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"Blizzeracz"},"content":" throw new RuntimeException(\"Please pick a number instead of using letters!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"Blizzeracz"},"content":" return false;","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":88,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"Blizzeracz"},"content":" private static void addTask(String description) throws DukeException {","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"Blizzeracz"},"content":" String[] parts \u003d description.split(\" \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":91,"author":{"gitId":"Blizzeracz"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please input a command followed by an argument! Try deadline, todo, event or delete!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"Blizzeracz"},"content":" String taskType \u003d parts[0].toLowerCase();","lastModifiedDate":"2023-08-21"},{"lineNumber":95,"author":{"gitId":"Blizzeracz"},"content":" String taskDetails \u003d parts[1].toLowerCase();","lastModifiedDate":"2023-08-21"},{"lineNumber":96,"author":{"gitId":"Blizzeracz"},"content":" Task task \u003d parseTask(taskType, taskDetails);","lastModifiedDate":"2023-08-21"},{"lineNumber":97,"author":{"gitId":"Blizzeracz"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-21"},{"lineNumber":98,"author":{"gitId":"Blizzeracz"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":99,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"You added \u0027\" + tasks.get(tasks.size() - 1) + \"\u0027 to the list!\"","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Blizzeracz"},"content":" + \"\\nNow you have \" + tasks.size() + \" task(s) in the list!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"You inputted an invalid command! Please try deadline, todo or event :)\");","lastModifiedDate":"2023-08-21"},{"lineNumber":103,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"Blizzeracz"},"content":" private static Task parseTask(String taskType, String taskDetails) {","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"Blizzeracz"},"content":" if (taskType.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"Blizzeracz"},"content":" return new ToDoTask(taskDetails);","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"Blizzeracz"},"content":" return DeadlineTask.parseDeadline(taskDetails, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"Blizzeracz"},"content":" return EventTask.parseEvent(taskDetails, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":116,"author":{"gitId":"Blizzeracz"},"content":" return null;","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"Blizzeracz"},"content":" private static void listTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":120,"author":{"gitId":"Blizzeracz"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"List is empty!\");","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":124,"author":{"gitId":"Blizzeracz"},"content":" for (int item \u003d 0; item \u003c tasks.size(); item++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":125,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(item + 1 + \". \" + tasks.get(item));","lastModifiedDate":"2023-08-21"},{"lineNumber":126,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":130,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-20"},{"lineNumber":132,"author":{"gitId":"Blizzeracz"},"content":" Duke.start();","lastModifiedDate":"2023-08-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":135,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"-":4,"Blizzeracz":131}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":6}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" public EventTask(String description, String from, String to, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" setEventFromDate(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" setEventToDate(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" throw new DateTimeException(\"Please input your date in the YYYY-MM-DD format!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" public static EventTask parseEvent(String taskDetails, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" if (!taskDetails.contains(\"from:\") || !taskDetails.contains(\"to:\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" throw new RuntimeException(\"Error! Remember to include \u0027from:\u0027 and \u0027to:\u0027 after the event command!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" String[] details \u003d taskDetails.split(\"from:\", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" String[] innerDetails \u003d details[1].split(\" to:\", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d details[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" String from \u003d innerDetails[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" from \u003d from.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" String to \u003d innerDetails[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" to \u003d to.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" return new EventTask(description, from, to, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" public void setEventFromDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" this.fromDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" public void setEventToDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" this.toDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedFromDate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" return fromDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedToDate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":" return toDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Blizzeracz"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.fromDate + \" to: \" + this.toDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"Blizzeracz"},"content":" return \"[E]\" + super.toString() + \" (from: \" + getFormattedFromDate() + \" to: \" + getFormattedToDate() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":63}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" private static final String FOLDER_PATH \u003d \"./data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" public Storage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" this.filePath \u003d DATA_FILE_PATH;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" public ArrayList\u003cTask\u003e loadTask() throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" String[] parts \u003d line.split(\"]\", 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" boolean isDone \u003d parts[1].equals(\"[X\");","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\"(\", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\")\", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" Task task \u003d parseTask(taskType, description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" loadedTasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" System.err.println(\"Corrupted data!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":" System.err.println(\"Error reading data file: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Blizzeracz"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Blizzeracz"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Blizzeracz"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Blizzeracz"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Blizzeracz"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Blizzeracz"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Blizzeracz"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Blizzeracz"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Blizzeracz"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Blizzeracz"},"content":" fw.write((tasks.get(i)).toSave() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Blizzeracz"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Blizzeracz"},"content":" public static Task parseTask(String taskType, String taskDetails, Boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Blizzeracz"},"content":" if (taskType.equalsIgnoreCase(\"[T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Blizzeracz"},"content":" taskDetails \u003d taskDetails.replace(\" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Blizzeracz"},"content":" return new ToDoTask(taskDetails, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equals(\"[D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Blizzeracz"},"content":" return DeadlineTask.parseDeadline(taskDetails, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equals(\"[E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Blizzeracz"},"content":" return EventTask.parseEvent(taskDetails, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Blizzeracz"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Blizzeracz":88}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" public void markTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Heyyo! I\u0027ve marked this task as done!\\n\" + this);","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Aww snap! I\u0027ve unmarked this task!\\n\" + this);","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" return this.description;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" return \"[\" + this.getStatus() + \"] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":38}},{"path":"src/main/java/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":" super(description, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" public ToDoTask(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"todo Eat","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"Deadline shit /by Monday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"event sleep /from monday /to tuesday","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"unmark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":9}}] +[{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate byDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" public DeadlineTask(String description, String byDate, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" setDeadlineByDate(byDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" throw new DateTimeException(\"Please input your date in the YYYY-MM-DD format!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" public void setDeadlineByDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" this.byDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedDeadline() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" return byDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.byDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" return \"[D]\" + super.toString() + \" (by: \" + getFormattedDeadline() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":33}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" public Duke() {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" storage \u003d new Storage();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" tasks \u003d new TaskList(storage.loadTask());","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" public void start() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" while (true) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" String command \u003d ui.getUserInput();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" ui.closeScanner();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" Parser.parse(command, tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" new Duke().start();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"-":3,"Blizzeracz":43}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" super(message);","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":6}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" protected LocalDate toDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" public EventTask(String description, String from, String to, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" setEventFromDate(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" setEventToDate(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please input your date in the YYYY-MM-DD format!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" public void setEventFromDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" this.fromDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" public void setEventToDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" this.toDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedFromDate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" return fromDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" public String getFormattedToDate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" return toDate.format(formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.fromDate + \" to: \" + this.toDate + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" return \"[E]\" + super.toString() + \" (from: \" + getFormattedFromDate() + \" to: \" + getFormattedToDate() + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":46}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":" public static void parse(String input, TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" String command \u003d parts[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" switch (command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" tasks.listTask();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" int task \u003d parseDeleteCommand(parts);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" tasks.deleteTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" ToDoTask toDoTask \u003d parseTodoCommand(parts, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" tasks.addTask(toDoTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" DeadlineTask deadlineTask \u003d parseDeadline(parts[1], false);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" EventTask eventTask \u003d parseEvent(parts[1], false);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" tasks.addTask(eventTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" int markTask \u003d parseMarkCommand(parts) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" if (markTask \u003c 0 || markTask \u003e\u003d tasks.getTotalTasks()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"There is no task for this number!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" tasks.getTask(markTask).markTask();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" int unmarkTask \u003d parseUnmarkCommand(parts) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" if (unmarkTask \u003c 0 || unmarkTask \u003e\u003d tasks.getTotalTasks()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"There is no task for this number!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" tasks.getTask(unmarkTask).unmarkTask();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"You inputted an invalid command! Please try deadline, todo or event :)\");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":" //For the data loading","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":" public static Task parse(String taskType, String taskDetails, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" if (taskType.equalsIgnoreCase(\"[T\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":" taskDetails \u003d taskDetails.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":" return new ToDoTask(taskDetails, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equals(\"[D\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Blizzeracz"},"content":" return Parser.parseDeadline(taskDetails, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Blizzeracz"},"content":" } else if (taskType.equals(\"[E\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Blizzeracz"},"content":" return Parser.parseEvent(taskDetails, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Blizzeracz"},"content":" return null;","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Blizzeracz"},"content":" private static int parseMarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Blizzeracz"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please provide a task number for \u0027done\u0027 command.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Blizzeracz"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Blizzeracz"},"content":" return taskNumber;","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Blizzeracz"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please pick a number instead of using letters!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Blizzeracz"},"content":" private static int parseUnmarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Blizzeracz"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please provide a task number for \u0027done\u0027 command.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Blizzeracz"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Blizzeracz"},"content":" return taskNumber;","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Blizzeracz"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please pick a number instead of using letters!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Blizzeracz"},"content":" private static int parseDeleteCommand(String[] parts) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Blizzeracz"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please provide a task number for \u0027delete\u0027 command.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Blizzeracz"},"content":" int taskNumber \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Blizzeracz"},"content":" return taskNumber;","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Blizzeracz"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Please pick a number instead of using letters!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Blizzeracz"},"content":" private static ToDoTask parseTodoCommand(String[] parts, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"Blizzeracz"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"Blizzeracz"},"content":" return new ToDoTask(parts[1], isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Blizzeracz"},"content":" private static DeadlineTask parseDeadline(String taskDetails, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"Blizzeracz"},"content":" if (!taskDetails.contains(\"by:\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Remember to include \u0027by:\u0027 after the deadline command!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"Blizzeracz"},"content":" String[] details \u003d taskDetails.split(\"by:\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d details[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"Blizzeracz"},"content":" String by \u003d details[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"Blizzeracz"},"content":" by \u003d by.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Blizzeracz"},"content":" return new DeadlineTask(description, by, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Blizzeracz"},"content":" public static EventTask parseEvent(String taskDetails, boolean isDone) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Blizzeracz"},"content":" if (!taskDetails.contains(\"from:\") || !taskDetails.contains(\"to:\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Remember to include \u0027from:\u0027 and \u0027to:\u0027 after the event command!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"Blizzeracz"},"content":" String[] details \u003d taskDetails.split(\"from:\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"Blizzeracz"},"content":" String[] innerDetails \u003d details[1].split(\" to:\", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d details[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"Blizzeracz"},"content":" String from \u003d innerDetails[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"Blizzeracz"},"content":" from \u003d from.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"Blizzeracz"},"content":" String to \u003d innerDetails[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"Blizzeracz"},"content":" to \u003d to.replace(\" \", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"Blizzeracz"},"content":" return new EventTask(description, from, to, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":135,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Blizzeracz":136}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" private static final String FOLDER_PATH \u003d \"./data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" public Storage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" this.filePath \u003d DATA_FILE_PATH;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" public ArrayList\u003cTask\u003e loadTask() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" String[] parts \u003d line.split(\"]\", 3);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" boolean isDone \u003d parts[1].equals(\"[X\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\"(\", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" description \u003d description.replace(\")\", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" Task task \u003d Parser.parse(taskType, description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" loadedTasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Corrupted data file: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":" if (!folder.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Blizzeracz"},"content":" folder.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Blizzeracz"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Blizzeracz"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Blizzeracz"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Blizzeracz"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Blizzeracz"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Blizzeracz"},"content":" fw.write((tasks.get(i)).toSave() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Blizzeracz"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Blizzeracz"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Error saving tasks to data file: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Blizzeracz":74}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" protected String description;","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" public void markTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Heyyo! I\u0027ve marked this task as done!\\n\" + this);","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Aww snap! I\u0027ve unmarked this task!\\n\" + this);","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" return this.description;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" return \"[\" + this.getStatus() + \"] \" + description;","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" public abstract String toSave();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":38}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"You added \u0027\" + tasks.get(tasks.size() - 1) + \"\u0027 to the list!\"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" + \"\\nNow you have \" + tasks.size() + \" task(s) in the list!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" public void deleteTask(int index) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" Task removedTask \u003d tasks.remove(index - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Yes Sir. I\u0027ve removed the following task\\n\" + removedTask + \"\\nNow you\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" \" have \" + tasks.size() + \" task(s) in the list!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" public Task getTask(int index) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" throw new DukeException(\"Invalid task number. Please provide a valid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Blizzeracz"},"content":" public int getTotalTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Blizzeracz"},"content":" return tasks.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Blizzeracz"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Blizzeracz"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Blizzeracz"},"content":" public void listTask() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Blizzeracz"},"content":" if (this.getTotalTasks() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"List is empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Blizzeracz"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Blizzeracz"},"content":" for (int item \u003d 0; item \u003c this.getTotalTasks(); item++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(item + 1 + \". \" + this.getTask(item));","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Blizzeracz":54}},{"path":"src/main/java/ToDoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" public ToDoTask(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":" super(description, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" public ToDoTask(String description, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" public String toSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":" public Ui() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Hi! This is your AI assistant LoyBoy!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"What can I do for you today?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Blizzeracz"},"content":" public String getUserInput() {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Blizzeracz"},"content":" System.out.print(\"\\nEnter a command: \");","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Blizzeracz"},"content":" return scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Blizzeracz"},"content":" public void showTaskAddedMessage(Task task, int totalTasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Got it! I\u0027ve added this task:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"Now you have \" + totalTasks + \" task(s) in the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Blizzeracz"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Blizzeracz"},"content":" System.out.println(\"I wish you a pleasant day ahead, goodbye!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Blizzeracz"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Blizzeracz"},"content":" System.err.println(\"Error! Cannot load tasks from data file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Blizzeracz"},"content":" public void showSavingError() {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Blizzeracz"},"content":" System.err.println(\"Error! Cannot save tasks to data file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Blizzeracz"},"content":" public void closeScanner() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Blizzeracz"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Blizzeracz"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Blizzeracz"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Blizzeracz":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Blizzeracz"},"content":"todo Eat","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Blizzeracz"},"content":"Deadline shit /by Monday","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Blizzeracz"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Blizzeracz"},"content":"event sleep /from monday /to tuesday","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Blizzeracz"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Blizzeracz"},"content":"unmark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Blizzeracz"},"content":"list","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Blizzeracz":9}}] diff --git a/Blizzeracz_ip_master/commits.json b/Blizzeracz_ip_master/commits.json index dbc44147..5ed85988 100644 --- a/Blizzeracz_ip_master/commits.json +++ b/Blizzeracz_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Blizzeracz":[{"date":"2023-08-20","commitResults":[{"hash":"504643564e07a4b468bebd48c55b6208ce9c43c6","isMergeCommit":false,"messageTitle":"Change the name of the bot and giving an outro","messageBody":"","tags":["Level-0.Rename,Greet,Exit"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"e5df12949943e70e3695e9e25a68a3843e5eb17a","isMergeCommit":false,"messageTitle":"Change how the bot reacts to certain words, echoing or exiting based off the keywords","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"c001e995378c008262898a3adeb7bb95bc076e56","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by user and display them back to user when requested","messageBody":"","tags":["Level-2.Add,List"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"862ca4fc3149c5bb5c3db9dd54fd2c82230cd12e","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done and undone and create a new class called task","messageBody":"","tags":["Level-3.Mark-as-done"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":9}}},{"hash":"606bf64dcd61b294298be8a65600a04140bf810d","isMergeCommit":false,"messageTitle":"Create subclasses under Task such as ToDos, Events and Deadlines. Clean up some of the code to make it more readable","messageBody":"","tags":["Level-4.ToDos,Events,Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":4}}},{"hash":"d669357bf91809c07c6f868900935ebea8d97876","isMergeCommit":false,"messageTitle":"Create the input and expected text file for automated testing of the bot","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"992a224677e2e9842950d9ef425777cbcc48a8a4","isMergeCommit":false,"messageTitle":"Create a new class DukeException for error handling. Use try catch block for exception handling as well","messageBody":"","tags":["Level-5.Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":12}}},{"hash":"82dbae3268c4f5794c340bd3b785664a1f40bfec","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and change normal aray to arraylist","messageBody":"","tags":["Level-6.Delete"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":21}}}]},{"date":"2023-08-27","commitResults":[{"hash":"27dafe71ae94d0fd9771a799bf4a4ccc175178d9","isMergeCommit":false,"messageTitle":"Add a storage class which save the tasks and load it from the disk","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":174,"deletions":24}}},{"hash":"453d6eb363840b7fefa72f8292ef61ad12952cff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7.Save"],"fileTypesAndContributionMap":{}},{"hash":"ff99e8b2c9ac072f1dbced8fe064fc297aea6ccf","isMergeCommit":false,"messageTitle":"Create a way for the bot to understand date format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":83,"deletions":50}}},{"hash":"b57da7fac4316c3cc912b466e1a8a7a8af834540","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8.Dates-and-Times"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Blizzeracz":{"java":393,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Blizzeracz":14323.4},"authorDisplayNameMap":{"Blizzeracz":"CS2103T-F08-3 LAM ..SIUS"}} +{"authorDailyContributionsMap":{"Blizzeracz":[{"date":"2023-08-20","commitResults":[{"hash":"504643564e07a4b468bebd48c55b6208ce9c43c6","isMergeCommit":false,"messageTitle":"Change the name of the bot and giving an outro","messageBody":"","tags":["Level-0.Rename,Greet,Exit"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"e5df12949943e70e3695e9e25a68a3843e5eb17a","isMergeCommit":false,"messageTitle":"Change how the bot reacts to certain words, echoing or exiting based off the keywords","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"c001e995378c008262898a3adeb7bb95bc076e56","isMergeCommit":false,"messageTitle":"Add the ability to store whatever text entered by user and display them back to user when requested","messageBody":"","tags":["Level-2.Add,List"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"862ca4fc3149c5bb5c3db9dd54fd2c82230cd12e","isMergeCommit":false,"messageTitle":"Add the ability to mark tasks as done and undone and create a new class called task","messageBody":"","tags":["Level-3.Mark-as-done"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":9}}},{"hash":"606bf64dcd61b294298be8a65600a04140bf810d","isMergeCommit":false,"messageTitle":"Create subclasses under Task such as ToDos, Events and Deadlines. Clean up some of the code to make it more readable","messageBody":"","tags":["Level-4.ToDos,Events,Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":4}}},{"hash":"d669357bf91809c07c6f868900935ebea8d97876","isMergeCommit":false,"messageTitle":"Create the input and expected text file for automated testing of the bot","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"992a224677e2e9842950d9ef425777cbcc48a8a4","isMergeCommit":false,"messageTitle":"Create a new class DukeException for error handling. Use try catch block for exception handling as well","messageBody":"","tags":["Level-5.Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":12}}},{"hash":"82dbae3268c4f5794c340bd3b785664a1f40bfec","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and change normal aray to arraylist","messageBody":"","tags":["Level-6.Delete"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":21}}}]},{"date":"2023-08-27","commitResults":[{"hash":"27dafe71ae94d0fd9771a799bf4a4ccc175178d9","isMergeCommit":false,"messageTitle":"Add a storage class which save the tasks and load it from the disk","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":174,"deletions":24}}},{"hash":"453d6eb363840b7fefa72f8292ef61ad12952cff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7.Save"],"fileTypesAndContributionMap":{}},{"hash":"ff99e8b2c9ac072f1dbced8fe064fc297aea6ccf","isMergeCommit":false,"messageTitle":"Create a way for the bot to understand date format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":83,"deletions":50}}},{"hash":"b57da7fac4316c3cc912b466e1a8a7a8af834540","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8.Dates-and-Times"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"15e85251321436acd6e37a9edfb0fcc5e4022805","isMergeCommit":false,"messageTitle":"Make the code more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":263,"deletions":198}}},{"hash":"bd5c2796ea094f2ae6b5c98602c7196adcc80446","isMergeCommit":false,"messageTitle":"Improve the OOP codes and debug the errors","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":22}}}]}]},"authorFileTypeContributionMap":{"Blizzeracz":{"java":482,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Blizzeracz":30661.273},"authorDisplayNameMap":{"Blizzeracz":"CS2103T-F08-3 LAM ..SIUS"}} diff --git a/Chandan8186_ip_master/authorship.json b/Chandan8186_ip_master/authorship.json index 9cf69764..9d5fdf0a 100644 --- a/Chandan8186_ip_master/authorship.json +++ b/Chandan8186_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"import exceptions.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidDeadlineException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidEventException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidIndexException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidTodoException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"import exceptions.UnknownCommandException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"import extensions.TaskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"import extensions.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" file format:","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" \u003ctasktype\u003e|\u003cisMarked\u003e|\u003cdesc\u003e|\u003cend\u003e|\u003cstart\u003e","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" private static final String HORIZONTAL_LINE \u003d \"_____________________________________________________\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" private static final String INTRO_MESSAGE \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" \" ____ _ _ ____ _____ ____ _ ____ _____\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" \"/ (__`| |_| | / () \\\\|_ _|/ () \\\\ | |__ / () \\\\|_ _|\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" \"\\\\____)|_| |_|/__/\\\\__\\\\ |_| /__/\\\\__\\\\|____|\\\\____/ |_|\\n\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" \"Hello! I\u0027m ChatALot.\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" private static final String OUTRO_MESSAGE \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":" private static TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Chandan8186"},"content":" private static void intro() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Chandan8186"},"content":" System.out.print(INTRO_MESSAGE);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Chandan8186"},"content":" private static void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Chandan8186"},"content":" System.out.print(OUTRO_MESSAGE);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Chandan8186"},"content":" private static void retrieveSavedData() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Chandan8186"},"content":" ArrayList\u003cString\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Chandan8186"},"content":" File f \u003d new File(\"data/duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Chandan8186"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Chandan8186"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Chandan8186"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Chandan8186"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Chandan8186"},"content":" String str \u003d s.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Chandan8186"},"content":" arr.add(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Chandan8186"},"content":" populate(arr);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Chandan8186"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Chandan8186"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Chandan8186"},"content":" private static void populate(ArrayList\u003cString\u003e arr) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Chandan8186"},"content":" for (String str : arr) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Chandan8186"},"content":" String[] segmented \u003d str.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Chandan8186"},"content":" String taskType \u003d segmented[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Chandan8186"},"content":" int isMarked \u003d Integer.parseInt(segmented[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d segmented[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Chandan8186"},"content":" String end;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Chandan8186"},"content":" String start;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Chandan8186"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Chandan8186"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addTodo(desc, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Chandan8186"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Chandan8186"},"content":" end \u003d segmented[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addDeadline(desc, end, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Chandan8186"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Chandan8186"},"content":" end \u003d segmented[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Chandan8186"},"content":" start \u003d segmented[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addEvent(desc, end, start, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Chandan8186"},"content":" public static void saveChanges() {","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Chandan8186"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Chandan8186"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Chandan8186"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Chandan8186"},"content":" FileWriter fileWriter \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Chandan8186"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Chandan8186"},"content":" fileWriter.append(Duke.list.getTextFormattedString());","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Chandan8186"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Chandan8186"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Chandan8186"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":109,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":110,"author":{"gitId":"Chandan8186"},"content":" private static String mark(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":115,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":118,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.markTaskAsDone(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"Chandan8186"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":127,"author":{"gitId":"Chandan8186"},"content":" task;","lastModifiedDate":"2023-08-20"},{"lineNumber":128,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"Chandan8186"},"content":" private static String unmark(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":138,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.unmarkTask(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"Chandan8186"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":147,"author":{"gitId":"Chandan8186"},"content":" task;","lastModifiedDate":"2023-08-20"},{"lineNumber":148,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"Chandan8186"},"content":" private static String deleteTask(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.deleteTask(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have %d tasks in the list.\", Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"Chandan8186"},"content":" private static String createTodo(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidTodoException();","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addTodo(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":180,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"Chandan8186"},"content":" private static String createDeadline(String action) {","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"Chandan8186"},"content":" if (!action.contains(\"/by\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"Chandan8186"},"content":" String[] arr \u003d action.split(\"/by\");","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"Chandan8186"},"content":" if (arr.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d arr[0].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"Chandan8186"},"content":" String deadline \u003d arr[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\") || deadline.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addDeadline(desc, deadline);","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":203,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":204,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":207,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"Chandan8186"},"content":" private static String createEvent(String action) {","lastModifiedDate":"2023-08-22"},{"lineNumber":210,"author":{"gitId":"Chandan8186"},"content":" if (!action.contains(\"/from\") || !action.contains(\"/to\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"Chandan8186"},"content":" String[] arr \u003d action.split(\"/from|/to\");","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"Chandan8186"},"content":" if (arr.length \u003c 3) {","lastModifiedDate":"2023-08-22"},{"lineNumber":216,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":217,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":218,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":219,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d arr[0].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":220,"author":{"gitId":"Chandan8186"},"content":" String start \u003d arr[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"Chandan8186"},"content":" String end \u003d arr[2].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\") || start.equals(\"\") || end.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":225,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addEvent(desc, start, end);","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":229,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":230,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":231,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":232,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":233,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":234,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":235,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":236,"author":{"gitId":"Chandan8186"},"content":" private static String processInput(String userInput) {","lastModifiedDate":"2023-08-22"},{"lineNumber":237,"author":{"gitId":"Chandan8186"},"content":" String[] inputArr \u003d userInput.trim().split(\" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":238,"author":{"gitId":"Chandan8186"},"content":" String restOfInput;","lastModifiedDate":"2023-08-22"},{"lineNumber":239,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":240,"author":{"gitId":"Chandan8186"},"content":" if (inputArr.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":241,"author":{"gitId":"Chandan8186"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-22"},{"lineNumber":242,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":243,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":244,"author":{"gitId":"Chandan8186"},"content":" String command \u003d inputArr[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":245,"author":{"gitId":"Chandan8186"},"content":" switch(command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":246,"author":{"gitId":"Chandan8186"},"content":" case \"list\":","lastModifiedDate":"2023-08-22"},{"lineNumber":247,"author":{"gitId":"Chandan8186"},"content":" return Duke.list.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":248,"author":{"gitId":"Chandan8186"},"content":" case \"mark\":","lastModifiedDate":"2023-08-22"},{"lineNumber":249,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(4).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":250,"author":{"gitId":"Chandan8186"},"content":" return mark(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":251,"author":{"gitId":"Chandan8186"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-22"},{"lineNumber":252,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(6).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":253,"author":{"gitId":"Chandan8186"},"content":" return unmark(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":254,"author":{"gitId":"Chandan8186"},"content":" case \"delete\":","lastModifiedDate":"2023-08-22"},{"lineNumber":255,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(6).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":256,"author":{"gitId":"Chandan8186"},"content":" return deleteTask(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":257,"author":{"gitId":"Chandan8186"},"content":" case \"todo\":","lastModifiedDate":"2023-08-22"},{"lineNumber":258,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(4).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":259,"author":{"gitId":"Chandan8186"},"content":" return createTodo(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":260,"author":{"gitId":"Chandan8186"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-22"},{"lineNumber":261,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(8).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":262,"author":{"gitId":"Chandan8186"},"content":" return createDeadline(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":263,"author":{"gitId":"Chandan8186"},"content":" case \"event\":","lastModifiedDate":"2023-08-22"},{"lineNumber":264,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(5).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":265,"author":{"gitId":"Chandan8186"},"content":" return createEvent(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":266,"author":{"gitId":"Chandan8186"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":267,"author":{"gitId":"Chandan8186"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":269,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":270,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":271,"author":{"gitId":"Chandan8186"},"content":" private static String displayOutput(String userInput) {","lastModifiedDate":"2023-08-20"},{"lineNumber":272,"author":{"gitId":"Chandan8186"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":273,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":274,"author":{"gitId":"Chandan8186"},"content":" output \u003d processInput(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"Chandan8186"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":276,"author":{"gitId":"Chandan8186"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":277,"author":{"gitId":"Chandan8186"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"Chandan8186"},"content":" output \u003d \"Runtime: \" + e.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":279,"author":{"gitId":"Chandan8186"},"content":" } finally {","lastModifiedDate":"2023-08-22"},{"lineNumber":280,"author":{"gitId":"Chandan8186"},"content":" String displayed \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":281,"author":{"gitId":"Chandan8186"},"content":" output +","lastModifiedDate":"2023-08-22"},{"lineNumber":282,"author":{"gitId":"Chandan8186"},"content":" \"\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":283,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":284,"author":{"gitId":"Chandan8186"},"content":" System.out.print(displayed);","lastModifiedDate":"2023-08-21"},{"lineNumber":285,"author":{"gitId":"Chandan8186"},"content":" return displayed;","lastModifiedDate":"2023-08-20"},{"lineNumber":286,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":287,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":288,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":289,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-20"},{"lineNumber":290,"author":{"gitId":"Chandan8186"},"content":" retrieveSavedData();","lastModifiedDate":"2023-08-27"},{"lineNumber":291,"author":{"gitId":"Chandan8186"},"content":" intro();","lastModifiedDate":"2023-08-20"},{"lineNumber":292,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":293,"author":{"gitId":"Chandan8186"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":294,"author":{"gitId":"Chandan8186"},"content":" String userInput \u003d myObj.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":295,"author":{"gitId":"Chandan8186"},"content":" String bye \u003d \"bye\";","lastModifiedDate":"2023-08-20"},{"lineNumber":296,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":297,"author":{"gitId":"Chandan8186"},"content":" while (!userInput.toLowerCase().equals(bye)) {","lastModifiedDate":"2023-08-20"},{"lineNumber":298,"author":{"gitId":"Chandan8186"},"content":" displayOutput(userInput);","lastModifiedDate":"2023-08-20"},{"lineNumber":299,"author":{"gitId":"Chandan8186"},"content":" userInput \u003d myObj.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":300,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":301,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":302,"author":{"gitId":"Chandan8186"},"content":" saveChanges();","lastModifiedDate":"2023-08-27"},{"lineNumber":303,"author":{"gitId":"Chandan8186"},"content":" exit();","lastModifiedDate":"2023-08-20"},{"lineNumber":304,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":305,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":306,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":302,"-":4}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":7}},{"path":"src/main/java/exceptions/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description/end for deadline task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: deadline \u003ctask description\u003e /by \u003cend date/time\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":8}},{"path":"src/main/java/exceptions/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description/start/end for event task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: event \u003ctask description\u003e \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" \"/from \u003cstart date/time\u003e /to \u003cend date/time\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":9}},{"path":"src/main/java/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidIndexException(int listSize) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(String.format(\"Invalid index format.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: mark \u003ctask index\u003e OR unmark \u003ctask index\u003e \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" \"OR delete \u003ctask index\u003e\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" \"where index is from 1 to %d.\", listSize));","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":10}},{"path":"src/main/java/exceptions/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidTodoException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidTodoException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description for todo task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: todo \u003ctask description\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":8}},{"path":"src/main/java/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":7}},{"path":"src/main/java/extensions/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" protected String deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" public DeadlineTask(String desc, String deadline) {","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" public DeadlineTask(String desc, String deadline, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"D|%d|%s|%s\", this.isDone ? 1 : 0, this.desc, this.deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" super.toString(),","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" this.deadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":33}},{"path":"src/main/java/extensions/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" protected String start;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" protected String end;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" public EventTask(String desc, String start, String end) {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" public EventTask(String desc, String start, String end, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"E|%d|%s|%s|%s\", this.isDone ? 1 : 0, this.desc, this.end, this.start);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" super.toString(),","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" this.start,","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" this.end);","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":37}},{"path":"src/main/java/extensions/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" protected String desc;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" protected abstract String getTextFormattedString();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" protected boolean markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" return true;","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" protected boolean unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" return true;","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[%s] %s\", getStatusIcon(), this.desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":34}},{"path":"src/main/java/extensions/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"public class TaskList {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" protected ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" public TaskList() {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":" public Task addTodo(String desc) {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new TodoTask(desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" public Task addTodo(String desc, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new TodoTask(desc, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" public Task addDeadline(String desc, String deadline) {","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new DeadlineTask(desc, deadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" public Task addDeadline(String desc, String deadline, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new DeadlineTask(desc, deadline, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":" public Task addEvent(String desc, String start, String end) {","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new EventTask(desc, start, end);","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Chandan8186"},"content":" public Task addEvent(String desc, String start, String end, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new EventTask(desc, start, end, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Chandan8186"},"content":" public Task markTaskAsDone(int i) {","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.get(i-1);","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"Chandan8186"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"Chandan8186"},"content":" public Task unmarkTask(int i) {","lastModifiedDate":"2023-08-20"},{"lineNumber":56,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.get(i-1);","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"Chandan8186"},"content":" task.unmark();","lastModifiedDate":"2023-08-20"},{"lineNumber":58,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"Chandan8186"},"content":" public Task deleteTask(int i) {","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.remove(i-1);","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"Chandan8186"},"content":" public int getSize() {","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"Chandan8186"},"content":" return this.list.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"Chandan8186"},"content":" public String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Chandan8186"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Chandan8186"},"content":" for (Task task : this.list) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Chandan8186"},"content":" str.append(task.getTextFormattedString() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Chandan8186"},"content":" return str.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"Chandan8186"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"Chandan8186"},"content":" int len \u003d this.list.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"Chandan8186"},"content":" if (len \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"Chandan8186"},"content":" str.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"Chandan8186"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":87,"author":{"gitId":"Chandan8186"},"content":" str.append(i + \". \" + this.list.get(i-1) + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"Chandan8186"},"content":" str.append(len + \". \" + this.list.get(len-1));","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"Chandan8186"},"content":" return str.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":93,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":93}},{"path":"src/main/java/extensions/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" public TodoTask(String desc, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"T|%d|%s\", this.isDone ? 1 : 0, this.desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"todo Assignment 1","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"deadline Assignment 2 /by tomorrow","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"event exam /from today /to tomorrow","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"unknown command","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":"deadline /by","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"event something /from /to tomorrow","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"mark 0","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Chandan8186":15}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"import exceptions.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidDeadlineException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidEventException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidIndexException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"import exceptions.InvalidTodoException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"import exceptions.UnknownCommandException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"import extensions.TaskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"import extensions.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" file format:","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" \u003ctasktype\u003e|\u003cisMarked\u003e|\u003cdesc\u003e|\u003cend\u003e|\u003cstart\u003e","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" private static final String HORIZONTAL_LINE \u003d \"_____________________________________________________\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" private static final String INTRO_MESSAGE \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" \" ____ _ _ ____ _____ ____ _ ____ _____\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" \"/ (__`| |_| | / () \\\\|_ _|/ () \\\\ | |__ / () \\\\|_ _|\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" \"\\\\____)|_| |_|/__/\\\\__\\\\ |_| /__/\\\\__\\\\|____|\\\\____/ |_|\\n\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" \"Hello! I\u0027m ChatALot.\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" \"What can I do for you?\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" private static final String OUTRO_MESSAGE \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" \"Bye. Hope to see you again soon!\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Chandan8186"},"content":" private static TaskList list \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Chandan8186"},"content":" private static void intro() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Chandan8186"},"content":" System.out.print(INTRO_MESSAGE);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Chandan8186"},"content":" private static void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Chandan8186"},"content":" System.out.print(OUTRO_MESSAGE);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Chandan8186"},"content":" private static void retrieveSavedData() {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Chandan8186"},"content":" ArrayList\u003cString\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Chandan8186"},"content":" File f \u003d new File(\"data/duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Chandan8186"},"content":" if (!f.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Chandan8186"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Chandan8186"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Chandan8186"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Chandan8186"},"content":" String str \u003d s.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Chandan8186"},"content":" arr.add(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Chandan8186"},"content":" populate(arr);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Chandan8186"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Chandan8186"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Chandan8186"},"content":" private static void populate(ArrayList\u003cString\u003e arr) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Chandan8186"},"content":" for (String str : arr) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Chandan8186"},"content":" String[] segmented \u003d str.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Chandan8186"},"content":" String taskType \u003d segmented[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Chandan8186"},"content":" int isMarked \u003d Integer.parseInt(segmented[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d segmented[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Chandan8186"},"content":" String end;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Chandan8186"},"content":" String start;","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Chandan8186"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Chandan8186"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addTodo(desc, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Chandan8186"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Chandan8186"},"content":" end \u003d segmented[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addDeadline(desc, end, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Chandan8186"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Chandan8186"},"content":" end \u003d segmented[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Chandan8186"},"content":" start \u003d segmented[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Chandan8186"},"content":" Duke.list.addEvent(desc, start, end, isMarked);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Chandan8186"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Chandan8186"},"content":" public static void saveChanges() {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Chandan8186"},"content":" File directory \u003d new File(\"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Chandan8186"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Chandan8186"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Chandan8186"},"content":" FileWriter fileWriter \u003d new FileWriter(\"data/duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Chandan8186"},"content":" fileWriter.write(\"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Chandan8186"},"content":" fileWriter.append(Duke.list.getTextFormattedString());","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Chandan8186"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Chandan8186"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Chandan8186"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":110,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":111,"author":{"gitId":"Chandan8186"},"content":" private static String mark(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":116,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":120,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.markTaskAsDone(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"Chandan8186"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":128,"author":{"gitId":"Chandan8186"},"content":" task;","lastModifiedDate":"2023-08-20"},{"lineNumber":129,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"Chandan8186"},"content":" private static String unmark(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":138,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.unmarkTask(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"Chandan8186"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":148,"author":{"gitId":"Chandan8186"},"content":" task;","lastModifiedDate":"2023-08-20"},{"lineNumber":149,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"Chandan8186"},"content":" private static String deleteTask(String taskNumString) {","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"Chandan8186"},"content":" if (Duke.list.getSize() \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"Chandan8186"},"content":" if (!taskNumString.matches(\"[0-9]+\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"Chandan8186"},"content":" int taskNum \u003d Integer.parseInt(taskNumString);","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"Chandan8186"},"content":" if (taskNum \u003c 1 || taskNum \u003e Duke.list.getSize()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidIndexException(Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.deleteTask(taskNum);","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have %d tasks in the list.\", Duke.list.getSize());","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"Chandan8186"},"content":" private static String createTodo(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidTodoException();","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addTodo(desc, 0);","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":180,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":183,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"Chandan8186"},"content":" private static String createDeadline(String action) {","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"Chandan8186"},"content":" if (!action.contains(\"/by\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"Chandan8186"},"content":" String[] arr \u003d action.split(\"/by\");","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"Chandan8186"},"content":" if (arr.length \u003c 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d arr[0].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"Chandan8186"},"content":" String deadline \u003d arr[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\") || deadline.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addDeadline(desc, deadline, 0);","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":207,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":208,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":209,"author":{"gitId":"Chandan8186"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":210,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidDeadlineException();","lastModifiedDate":"2023-08-28"},{"lineNumber":211,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":212,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"Chandan8186"},"content":" private static String createEvent(String action) {","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":216,"author":{"gitId":"Chandan8186"},"content":" if (!action.contains(\"/from\") || !action.contains(\"/to\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":217,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":218,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":219,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":220,"author":{"gitId":"Chandan8186"},"content":" String[] arr \u003d action.split(\"/from|/to\");","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"Chandan8186"},"content":" if (arr.length \u003c 3) {","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":225,"author":{"gitId":"Chandan8186"},"content":" String desc \u003d arr[0].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"Chandan8186"},"content":" String start \u003d arr[1].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"Chandan8186"},"content":" String end \u003d arr[2].trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":229,"author":{"gitId":"Chandan8186"},"content":" if (desc.equals(\"\") || start.equals(\"\") || end.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":230,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d Duke.list.addEvent(desc, start, end, 0);","lastModifiedDate":"2023-08-28"},{"lineNumber":234,"author":{"gitId":"Chandan8186"},"content":" return \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":235,"author":{"gitId":"Chandan8186"},"content":" \" \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":236,"author":{"gitId":"Chandan8186"},"content":" task +","lastModifiedDate":"2023-08-20"},{"lineNumber":237,"author":{"gitId":"Chandan8186"},"content":" \"\\nNow you have \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":238,"author":{"gitId":"Chandan8186"},"content":" Duke.list.getSize() +","lastModifiedDate":"2023-08-20"},{"lineNumber":239,"author":{"gitId":"Chandan8186"},"content":" \" tasks in the list.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":240,"author":{"gitId":"Chandan8186"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":241,"author":{"gitId":"Chandan8186"},"content":" throw new InvalidEventException();","lastModifiedDate":"2023-08-28"},{"lineNumber":242,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":243,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":244,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":245,"author":{"gitId":"Chandan8186"},"content":" private static String processInput(String userInput) {","lastModifiedDate":"2023-08-22"},{"lineNumber":246,"author":{"gitId":"Chandan8186"},"content":" String[] inputArr \u003d userInput.trim().split(\" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":247,"author":{"gitId":"Chandan8186"},"content":" String restOfInput;","lastModifiedDate":"2023-08-22"},{"lineNumber":248,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":249,"author":{"gitId":"Chandan8186"},"content":" if (inputArr.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":250,"author":{"gitId":"Chandan8186"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-22"},{"lineNumber":251,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":252,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":253,"author":{"gitId":"Chandan8186"},"content":" String command \u003d inputArr[0];","lastModifiedDate":"2023-08-22"},{"lineNumber":254,"author":{"gitId":"Chandan8186"},"content":" switch(command) {","lastModifiedDate":"2023-08-22"},{"lineNumber":255,"author":{"gitId":"Chandan8186"},"content":" case \"list\":","lastModifiedDate":"2023-08-22"},{"lineNumber":256,"author":{"gitId":"Chandan8186"},"content":" return Duke.list.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":257,"author":{"gitId":"Chandan8186"},"content":" case \"mark\":","lastModifiedDate":"2023-08-22"},{"lineNumber":258,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(4).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":259,"author":{"gitId":"Chandan8186"},"content":" return mark(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":260,"author":{"gitId":"Chandan8186"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-22"},{"lineNumber":261,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(6).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":262,"author":{"gitId":"Chandan8186"},"content":" return unmark(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":263,"author":{"gitId":"Chandan8186"},"content":" case \"delete\":","lastModifiedDate":"2023-08-22"},{"lineNumber":264,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(6).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":265,"author":{"gitId":"Chandan8186"},"content":" return deleteTask(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":266,"author":{"gitId":"Chandan8186"},"content":" case \"todo\":","lastModifiedDate":"2023-08-22"},{"lineNumber":267,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(4).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"Chandan8186"},"content":" return createTodo(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":269,"author":{"gitId":"Chandan8186"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-22"},{"lineNumber":270,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(8).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":271,"author":{"gitId":"Chandan8186"},"content":" return createDeadline(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":272,"author":{"gitId":"Chandan8186"},"content":" case \"event\":","lastModifiedDate":"2023-08-22"},{"lineNumber":273,"author":{"gitId":"Chandan8186"},"content":" restOfInput \u003d userInput.trim().substring(5).trim();","lastModifiedDate":"2023-08-22"},{"lineNumber":274,"author":{"gitId":"Chandan8186"},"content":" return createEvent(restOfInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"Chandan8186"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":276,"author":{"gitId":"Chandan8186"},"content":" throw new UnknownCommandException();","lastModifiedDate":"2023-08-22"},{"lineNumber":277,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":279,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":280,"author":{"gitId":"Chandan8186"},"content":" private static String displayOutput(String userInput) {","lastModifiedDate":"2023-08-20"},{"lineNumber":281,"author":{"gitId":"Chandan8186"},"content":" String output \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":282,"author":{"gitId":"Chandan8186"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":283,"author":{"gitId":"Chandan8186"},"content":" output \u003d processInput(userInput);","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"Chandan8186"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":285,"author":{"gitId":"Chandan8186"},"content":" output \u003d e.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":286,"author":{"gitId":"Chandan8186"},"content":" } catch (RuntimeException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":287,"author":{"gitId":"Chandan8186"},"content":" output \u003d \"Runtime: \" + e.getMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":288,"author":{"gitId":"Chandan8186"},"content":" } finally {","lastModifiedDate":"2023-08-22"},{"lineNumber":289,"author":{"gitId":"Chandan8186"},"content":" String displayed \u003d HORIZONTAL_LINE +","lastModifiedDate":"2023-08-27"},{"lineNumber":290,"author":{"gitId":"Chandan8186"},"content":" output +","lastModifiedDate":"2023-08-22"},{"lineNumber":291,"author":{"gitId":"Chandan8186"},"content":" \"\\n\" +","lastModifiedDate":"2023-08-20"},{"lineNumber":292,"author":{"gitId":"Chandan8186"},"content":" HORIZONTAL_LINE;","lastModifiedDate":"2023-08-27"},{"lineNumber":293,"author":{"gitId":"Chandan8186"},"content":" System.out.print(displayed);","lastModifiedDate":"2023-08-21"},{"lineNumber":294,"author":{"gitId":"Chandan8186"},"content":" return displayed;","lastModifiedDate":"2023-08-20"},{"lineNumber":295,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":296,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":297,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":298,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-20"},{"lineNumber":299,"author":{"gitId":"Chandan8186"},"content":" retrieveSavedData();","lastModifiedDate":"2023-08-27"},{"lineNumber":300,"author":{"gitId":"Chandan8186"},"content":" intro();","lastModifiedDate":"2023-08-20"},{"lineNumber":301,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":302,"author":{"gitId":"Chandan8186"},"content":" Scanner myObj \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":303,"author":{"gitId":"Chandan8186"},"content":" String userInput \u003d myObj.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":304,"author":{"gitId":"Chandan8186"},"content":" String bye \u003d \"bye\";","lastModifiedDate":"2023-08-20"},{"lineNumber":305,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":306,"author":{"gitId":"Chandan8186"},"content":" while (!userInput.toLowerCase().equals(bye)) {","lastModifiedDate":"2023-08-20"},{"lineNumber":307,"author":{"gitId":"Chandan8186"},"content":" displayOutput(userInput);","lastModifiedDate":"2023-08-20"},{"lineNumber":308,"author":{"gitId":"Chandan8186"},"content":" userInput \u003d myObj.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":309,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":310,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":311,"author":{"gitId":"Chandan8186"},"content":" saveChanges();","lastModifiedDate":"2023-08-27"},{"lineNumber":312,"author":{"gitId":"Chandan8186"},"content":" exit();","lastModifiedDate":"2023-08-20"},{"lineNumber":313,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":314,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":315,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":311,"-":4}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public DukeException(String errorMessage) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":7}},{"path":"src/main/java/exceptions/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidDateException extends DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidDateException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Invalid date format.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Chandan8186":7}},{"path":"src/main/java/exceptions/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidDeadlineException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidDeadlineException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description/end for deadline task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: deadline \u003ctask description\u003e /by \u003cyyyy-MM-dd HHmm\u003e\");","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":8}},{"path":"src/main/java/exceptions/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidEventException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidEventException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description/start/end for event task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: event \u003ctask description\u003e \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" \"/from \u003cyyyy-MM-dd HHmm\u003e /to \u003cyyyy-MM-dd HHmm\u003e\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":9}},{"path":"src/main/java/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidIndexException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidIndexException(int listSize) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(String.format(\"Invalid index format.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: mark \u003ctask index\u003e OR unmark \u003ctask index\u003e \" +","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" \"OR delete \u003ctask index\u003e\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" \"where index is from 1 to %d.\", listSize));","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":10}},{"path":"src/main/java/exceptions/InvalidTodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class InvalidTodoException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public InvalidTodoException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"Missing description for todo task.\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" \"Format should be: todo \u003ctask description\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":8}},{"path":"src/main/java/exceptions/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package exceptions;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class UnknownCommandException extends DukeException {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public UnknownCommandException() {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Chandan8186":7}},{"path":"src/main/java/extensions/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" protected final DateTimeFormatter INPUT_FORMAT","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" protected final DateTimeFormatter DISPLAY_FORMAT","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" \u003d DateTimeFormatter.ofPattern(\"dd-MMM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" public DeadlineTask(String desc, LocalDateTime deadline, int isMarked) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"D|%d|%s|%s\", this.isDone ? 1 : 0,","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" this.desc, this.deadline.format(INPUT_FORMAT).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[D]%s (by: %s)\",","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" super.toString(),","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" this.deadline.format(DISPLAY_FORMAT).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":36}},{"path":"src/main/java/extensions/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" protected final DateTimeFormatter INPUT_FORMAT","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" protected final DateTimeFormatter DISPLAY_FORMAT","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" \u003d DateTimeFormatter.ofPattern(\"dd-MMM-yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" public EventTask(String desc, LocalDateTime start, LocalDateTime end, int isMarked) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"E|%d|%s|%s|%s\", this.isDone ? 1 : 0, this.desc,","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" this.end.format(INPUT_FORMAT).toString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" this.start.format(INPUT_FORMAT).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[E]%s (from: %s to: %s)\",","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" super.toString(),","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":" this.start.format(DISPLAY_FORMAT).toString(),","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":" this.end.format(DISPLAY_FORMAT).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":41}},{"path":"src/main/java/extensions/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" protected String desc;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":" protected abstract String getTextFormattedString();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" protected boolean markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" return true;","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" protected boolean unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" return true;","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[%s] %s\", getStatusIcon(), this.desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":34}},{"path":"src/main/java/extensions/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"public class TaskList {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" protected static final DateTimeFormatter DATETIME_FORMAT","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" protected ArrayList\u003cTask\u003e list;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":" public TaskList() {","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" this.list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" public Task addTodo(String desc, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new TodoTask(desc, isMarked);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" public Task addDeadline(String desc, String deadline, int isMarked)","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":" throws DateTimeParseException {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(deadline, DATETIME_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new DeadlineTask(desc, dateTime, isMarked);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Chandan8186"},"content":" public Task addEvent(String desc, String start, String end, int isMarked)","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Chandan8186"},"content":" throws DateTimeParseException{","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Chandan8186"},"content":" LocalDateTime dateTimeStart \u003d LocalDateTime.parse(start, DATETIME_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Chandan8186"},"content":" LocalDateTime dateTimeEnd \u003d LocalDateTime.parse(end, DATETIME_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d new EventTask(desc, dateTimeStart, dateTimeEnd, isMarked);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Chandan8186"},"content":" this.list.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Chandan8186"},"content":" public Task markTaskAsDone(int i) {","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.get(i-1);","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Chandan8186"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Chandan8186"},"content":" public Task unmarkTask(int i) {","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.get(i-1);","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"Chandan8186"},"content":" task.unmark();","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"Chandan8186"},"content":" public Task deleteTask(int i) {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"Chandan8186"},"content":" Task task \u003d this.list.remove(i-1);","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"Chandan8186"},"content":" return task;","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"Chandan8186"},"content":" public int getSize() {","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"Chandan8186"},"content":" return this.list.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"Chandan8186"},"content":" public String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Chandan8186"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Chandan8186"},"content":" for (Task task : this.list) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Chandan8186"},"content":" str.append(task.getTextFormattedString() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Chandan8186"},"content":" return str.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"Chandan8186"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"Chandan8186"},"content":" int len \u003d this.list.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"Chandan8186"},"content":" if (len \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"Chandan8186"},"content":" return \"The task list is empty.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"Chandan8186"},"content":" str.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"Chandan8186"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"Chandan8186"},"content":" str.append(i + \". \" + this.list.get(i-1) + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"Chandan8186"},"content":" str.append(len + \". \" + this.list.get(len-1));","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"Chandan8186"},"content":" return str.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":85}},{"path":"src/main/java/extensions/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"package extensions;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":" public TodoTask(String desc) {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":" public TodoTask(String desc, int isMarked) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":" super(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":" if (isMarked \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":" protected String getTextFormattedString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":" return String.format(\"T|%d|%s\", this.isDone ? 1 : 0, this.desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Chandan8186"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Chandan8186"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Chandan8186"},"content":" String output \u003d String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Chandan8186"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Chandan8186"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Chandan8186"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Chandan8186":26}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Chandan8186"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Chandan8186"},"content":"todo Assignment 1","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Chandan8186"},"content":"deadline Assignment 2 /by 2023-01-01 1245","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Chandan8186"},"content":"event exam /from 2023-01-01 1245 /to 2023-01-01 1300","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Chandan8186"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Chandan8186"},"content":"unmark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Chandan8186"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Chandan8186"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Chandan8186"},"content":"unknown command","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Chandan8186"},"content":"todo","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Chandan8186"},"content":"deadline /by","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Chandan8186"},"content":"event something /from /to tomorrow","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Chandan8186"},"content":"deadline a /by b","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Chandan8186"},"content":"event a /from b /to c","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Chandan8186"},"content":"mark 0","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Chandan8186"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Chandan8186"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Chandan8186":17}}] diff --git a/Chandan8186_ip_master/commits.json b/Chandan8186_ip_master/commits.json index 7379934a..f8978a76 100644 --- a/Chandan8186_ip_master/commits.json +++ b/Chandan8186_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Chandan8186":[{"date":"2023-08-20","commitResults":[{"hash":"7d09b64d9a9d7f59f7abc1cc2dd9a32eceaeaede","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"- Renamed Duke to ChatALot\n- Added greet message (skeletal version)\n- Added *.class to .gitignore\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"dd4059529d7d2176779e5ca6e1716327838b2f3c","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"- ChatALot echoes user input\n- minor design changes\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":7}}},{"hash":"85d565ed32a4a678d2c80ff8c6c2fdbd58c31293","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"- functionality for storing items in a list\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":10}}},{"hash":"190f6a4206de7dd4f067a55d3b6a7b477e422f1c","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"- added task completion status\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":54}}},{"hash":"ad7b2626f22933b523441c30225ce71c47bddfd4","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"- renamed ChatALot.java back to Duke.java\n- added different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":202,"deletions":87}}}]},{"date":"2023-08-21","commitResults":[{"hash":"b35add30b19157676f2739a4f78293207f72ae00","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"- important bug fixes\n- added some tests for all commands\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":7,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"81fe732209dbd9c2190dfa0f88a952723029a54b","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"- implemented error handling\n- bug fixes\n- updated runtest with more tests\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":191,"deletions":59}}},{"hash":"7536706f528510bd2c13ff517778c07c201f697b","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"- added delete functionality\n- added test case for delete\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":31,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"1aa8a8debb4de7852e71992f63e37ff9105142c6","isMergeCommit":false,"messageTitle":"Add Save Functionality","messageBody":"- Fix some bugs and refactor code\n- Add save functionality\n","fileTypesAndContributionMap":{"java":{"insertions":192,"deletions":52}}},{"hash":"b35f2ea880832843f383ef4a04a0209a2a7ef23b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Chandan8186":{"java":574,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Chandan8186":37170.9},"authorDisplayNameMap":{"Chandan8186":"CS2103T-T08-3 CHAN..BABU"}} +{"authorDailyContributionsMap":{"Chandan8186":[{"date":"2023-08-20","commitResults":[{"hash":"7d09b64d9a9d7f59f7abc1cc2dd9a32eceaeaede","isMergeCommit":false,"messageTitle":"Level-0: Rename, Greet, Exit","messageBody":"- Renamed Duke to ChatALot\n- Added greet message (skeletal version)\n- Added *.class to .gitignore\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"dd4059529d7d2176779e5ca6e1716327838b2f3c","isMergeCommit":false,"messageTitle":"Level-1: Echo","messageBody":"- ChatALot echoes user input\n- minor design changes\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":7}}},{"hash":"85d565ed32a4a678d2c80ff8c6c2fdbd58c31293","isMergeCommit":false,"messageTitle":"Level-2: Add, List","messageBody":"- functionality for storing items in a list\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":10}}},{"hash":"190f6a4206de7dd4f067a55d3b6a7b477e422f1c","isMergeCommit":false,"messageTitle":"Level-3: Mark as Done","messageBody":"- added task completion status\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":54}}},{"hash":"ad7b2626f22933b523441c30225ce71c47bddfd4","isMergeCommit":false,"messageTitle":"Level-4: ToDo, Event, Deadline","messageBody":"- renamed ChatALot.java back to Duke.java\n- added different task types\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":202,"deletions":87}}}]},{"date":"2023-08-21","commitResults":[{"hash":"b35add30b19157676f2739a4f78293207f72ae00","isMergeCommit":false,"messageTitle":"A-TextUiTesting: Automated Text UI Testing","messageBody":"- important bug fixes\n- added some tests for all commands\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":7,"deletions":7}}}]},{"date":"2023-08-22","commitResults":[{"hash":"81fe732209dbd9c2190dfa0f88a952723029a54b","isMergeCommit":false,"messageTitle":"Level-5: Handle Errors","messageBody":"- implemented error handling\n- bug fixes\n- updated runtest with more tests\n","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":191,"deletions":59}}},{"hash":"7536706f528510bd2c13ff517778c07c201f697b","isMergeCommit":false,"messageTitle":"Level-6: Delete","messageBody":"- added delete functionality\n- added test case for delete\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":31,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"1aa8a8debb4de7852e71992f63e37ff9105142c6","isMergeCommit":false,"messageTitle":"Add Save Functionality","messageBody":"- Fix some bugs and refactor code\n- Add save functionality\n","fileTypesAndContributionMap":{"java":{"insertions":192,"deletions":52}}},{"hash":"b35f2ea880832843f383ef4a04a0209a2a7ef23b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"406123123dedd512f054b5edaff50912a091f9ef","isMergeCommit":false,"messageTitle":"Add date and time readability","messageBody":"- Fix some bugs\n- Add date and time readability\n","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":83}}},{"hash":"0e674b8c08ce5e2e5d14f496834f35f2d74cee1b","isMergeCommit":false,"messageTitle":"Update tests to accommodate date and time formats","messageBody":"- Change tests to test for invalid date and time formats\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2}}},{"hash":"57925f02f3e86390244627827c8a829e4c8aa36e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Chandan8186":{"java":589,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":17}},"authorContributionVariance":{"Chandan8186":34209.508},"authorDisplayNameMap":{"Chandan8186":"CS2103T-T08-3 CHAN..BABU"}} diff --git a/Cikguseven_ip_master/authorship.json b/Cikguseven_ip_master/authorship.json index 54e060da..bb3c287a 100644 --- a/Cikguseven_ip_master/authorship.json +++ b/Cikguseven_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Deadline task that contains description of task and deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" private final String deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" * Public constructor for deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" * @param deadline Deadline of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" super(description, \"D\");","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" * @return Information of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" return super.toString() + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Event task that contains description of event,","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" * as well as start and end date/time.","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" private final String start;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" private final String end;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" * Public constructor for event.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" * @param start Start date/time of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" * @param end End date/time of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" super(description, \"E\");","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" * @return Information of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" return super.toString() +","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":" \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":30}},{"path":"src/main/java/Oscar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" * Chatbot named Oscar that can respond to user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":"public class Oscar {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" enum Commands {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" DELETE,","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" EVENT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" * Display message to greet user.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" private static void greet() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Hello! This is Oscar, your friendly chatbot :)\");","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"What can Oscar do for you?\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":" * Display message when terminating Duke.","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Cikguseven"},"content":" private static void bye() {","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Goodbye for now. \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Cikguseven"},"content":" \"Oscar hopes to see you again soon!\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Cikguseven"},"content":" * List stored tasks in chronological order of addition.","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Cikguseven"},"content":" private static void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Cikguseven"},"content":" for (int i \u003d 1; i \u003c\u003d taskList.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(i - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Cikguseven"},"content":" System.out.println(i + \".\" + currentTask.toString());","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Cikguseven"},"content":" System.out.println();","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Cikguseven"},"content":" * Displays the number of tasks stored in Oscar.","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"Cikguseven"},"content":" private static void listCount() {","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"Cikguseven"},"content":" int listSize \u003d taskList.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"Cikguseven"},"content":" if (listSize \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You have no tasks in the list. Add some now!\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":56,"author":{"gitId":"Cikguseven"},"content":" } else if (listSize \u003d\u003d 1) {","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You have 1 task in the list.\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":58,"author":{"gitId":"Cikguseven"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You now have \" + listSize + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as done using the task number.","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be marked as done.","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"Cikguseven"},"content":" private static void mark(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Cikguseven"},"content":" \"Please enter the number of the task to be marked as done.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":79,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"Cikguseven"},"content":" currentTask.markAsDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Nice! Oscar has marked this task as done:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":87,"author":{"gitId":"Cikguseven"},"content":" System.out.println(currentTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as not done using the task number.","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be marked as not done.","lastModifiedDate":"2023-08-20"},{"lineNumber":93,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"Cikguseven"},"content":" private static void unmark(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Please enter the order \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Cikguseven"},"content":" \"of the task to be marked as not done.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":107,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":108,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":111,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":112,"author":{"gitId":"Cikguseven"},"content":" currentTask.markAsNotDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":113,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has marked this task as not done yet:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":114,"author":{"gitId":"Cikguseven"},"content":" System.out.println(currentTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":115,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":116,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":117,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":118,"author":{"gitId":"Cikguseven"},"content":" * Delete a task using the task number.","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be deleted.","lastModifiedDate":"2023-08-20"},{"lineNumber":120,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":122,"author":{"gitId":"Cikguseven"},"content":" private static void delete(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":124,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":125,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":126,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":127,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Please enter the order \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"Cikguseven"},"content":" \"of the task to be deleted.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":130,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":131,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":134,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":135,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":138,"author":{"gitId":"Cikguseven"},"content":" Task removedTask \u003d taskList.remove(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":139,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has removed this task:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":140,"author":{"gitId":"Cikguseven"},"content":" System.out.println(removedTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":141,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":142,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":143,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":144,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":145,"author":{"gitId":"Cikguseven"},"content":" * Create a new todo task and save it to the collection.","lastModifiedDate":"2023-08-20"},{"lineNumber":146,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of todo task.","lastModifiedDate":"2023-08-20"},{"lineNumber":147,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Todo missing description.","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":149,"author":{"gitId":"Cikguseven"},"content":" public static void todo(String description) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":151,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"Cikguseven"},"content":" \"The description of a todo task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":154,"author":{"gitId":"Cikguseven"},"content":" Task newTodo \u003d new Todo(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":155,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newTodo);","lastModifiedDate":"2023-08-20"},{"lineNumber":156,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newTodo + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":157,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":158,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":159,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":160,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":161,"author":{"gitId":"Cikguseven"},"content":" * Create a new deadline task and save it to the collection.","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"Cikguseven"},"content":" * @param details Information about the details and deadline of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Deadline missing details.","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":165,"author":{"gitId":"Cikguseven"},"content":" public static void deadline(String details) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"Cikguseven"},"content":" if (!details.contains(\" /by \")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":167,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"Cikguseven"},"content":" \"The deadline task is not formatted correctly.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":170,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d details.split(\" /by \", 2);","lastModifiedDate":"2023-08-20"},{"lineNumber":171,"author":{"gitId":"Cikguseven"},"content":" String description \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":172,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":173,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":174,"author":{"gitId":"Cikguseven"},"content":" \"The description of a deadline task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":175,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":176,"author":{"gitId":"Cikguseven"},"content":" String deadline \u003d split[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":177,"author":{"gitId":"Cikguseven"},"content":" if (deadline.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":179,"author":{"gitId":"Cikguseven"},"content":" \"The deadline of a deadline task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":180,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"Cikguseven"},"content":" Task newDeadline \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":183,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newDeadline + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":184,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":185,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":186,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":187,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":188,"author":{"gitId":"Cikguseven"},"content":" * Create a new event task and save it to the collection.","lastModifiedDate":"2023-08-20"},{"lineNumber":189,"author":{"gitId":"Cikguseven"},"content":" * @param details Information about the details, as well as start and end","lastModifiedDate":"2023-08-20"},{"lineNumber":190,"author":{"gitId":"Cikguseven"},"content":" * date/time of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":191,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Event missing details.","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":193,"author":{"gitId":"Cikguseven"},"content":" public static void event(String details) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"Cikguseven"},"content":" if (!details.contains(\" /from \") || !details.contains(\" /to \")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":195,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"Cikguseven"},"content":" \"The event task is not formatted correctly.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":197,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":198,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d details.split(\" /from | /to \");","lastModifiedDate":"2023-08-20"},{"lineNumber":199,"author":{"gitId":"Cikguseven"},"content":" String description \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":200,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":201,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":202,"author":{"gitId":"Cikguseven"},"content":" \"The description of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":204,"author":{"gitId":"Cikguseven"},"content":" String start \u003d split[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Cikguseven"},"content":" if (start.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":207,"author":{"gitId":"Cikguseven"},"content":" \"The start date/time of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":208,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":209,"author":{"gitId":"Cikguseven"},"content":" String end \u003d split[2];","lastModifiedDate":"2023-08-20"},{"lineNumber":210,"author":{"gitId":"Cikguseven"},"content":" if (end.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":211,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":212,"author":{"gitId":"Cikguseven"},"content":" \"The end date/time of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":213,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":214,"author":{"gitId":"Cikguseven"},"content":" Task newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-20"},{"lineNumber":215,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newEvent);","lastModifiedDate":"2023-08-20"},{"lineNumber":216,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newEvent + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":217,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":218,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":219,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":220,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":221,"author":{"gitId":"Cikguseven"},"content":" * Programme flow to run Oscar","lastModifiedDate":"2023-08-20"},{"lineNumber":222,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Handling unknown commands.","lastModifiedDate":"2023-08-27"},{"lineNumber":223,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":224,"author":{"gitId":"Cikguseven"},"content":" public static void main(String[] args) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":225,"author":{"gitId":"Cikguseven"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-19"},{"lineNumber":226,"author":{"gitId":"Cikguseven"},"content":" boolean running \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":227,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":228,"author":{"gitId":"Cikguseven"},"content":" greet();","lastModifiedDate":"2023-08-20"},{"lineNumber":229,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":230,"author":{"gitId":"Cikguseven"},"content":" while (running) {","lastModifiedDate":"2023-08-20"},{"lineNumber":231,"author":{"gitId":"Cikguseven"},"content":" // Obtain command and details entered by user to determine the next","lastModifiedDate":"2023-08-20"},{"lineNumber":232,"author":{"gitId":"Cikguseven"},"content":" // course of action","lastModifiedDate":"2023-08-20"},{"lineNumber":233,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":234,"author":{"gitId":"Cikguseven"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":235,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-20"},{"lineNumber":236,"author":{"gitId":"Cikguseven"},"content":" String command \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":237,"author":{"gitId":"Cikguseven"},"content":" Commands c;","lastModifiedDate":"2023-08-24"},{"lineNumber":238,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"Cikguseven"},"content":" c \u003d Commands.valueOf(split[0].toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":240,"author":{"gitId":"Cikguseven"},"content":" String details \u003d userInput.length() \u003e command.length() ? split[1] : \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":241,"author":{"gitId":"Cikguseven"},"content":" switch (c) {","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"Cikguseven"},"content":" // Exit programme if user enters \"bye\" command","lastModifiedDate":"2023-08-19"},{"lineNumber":243,"author":{"gitId":"Cikguseven"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"Cikguseven"},"content":" bye();","lastModifiedDate":"2023-08-20"},{"lineNumber":245,"author":{"gitId":"Cikguseven"},"content":" running \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":246,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":247,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":248,"author":{"gitId":"Cikguseven"},"content":" // Display text stored by user in chronological order if","lastModifiedDate":"2023-08-19"},{"lineNumber":249,"author":{"gitId":"Cikguseven"},"content":" // user enters \"list\" command","lastModifiedDate":"2023-08-19"},{"lineNumber":250,"author":{"gitId":"Cikguseven"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"Cikguseven"},"content":" list();","lastModifiedDate":"2023-08-20"},{"lineNumber":252,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":253,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":254,"author":{"gitId":"Cikguseven"},"content":" // Mark task as done if user enters \"mark\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":255,"author":{"gitId":"Cikguseven"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"Cikguseven"},"content":" mark(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":257,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":258,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":259,"author":{"gitId":"Cikguseven"},"content":" // Mark task as not done if user enters \"unmark\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":260,"author":{"gitId":"Cikguseven"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"Cikguseven"},"content":" unmark(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":262,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":263,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":264,"author":{"gitId":"Cikguseven"},"content":" // Delete a task if user enters \"delete\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":265,"author":{"gitId":"Cikguseven"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"Cikguseven"},"content":" delete(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":267,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":268,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":269,"author":{"gitId":"Cikguseven"},"content":" // Create a new todo task if user enters \"todo\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":270,"author":{"gitId":"Cikguseven"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"Cikguseven"},"content":" todo(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":272,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":273,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":274,"author":{"gitId":"Cikguseven"},"content":" // Create a new deadline task if user enters \"deadline\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":275,"author":{"gitId":"Cikguseven"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"Cikguseven"},"content":" deadline(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":277,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":278,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":279,"author":{"gitId":"Cikguseven"},"content":" // Create a new event task if user enters \"event\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":280,"author":{"gitId":"Cikguseven"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"Cikguseven"},"content":" event(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":282,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":283,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"Cikguseven"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"Cikguseven"},"content":" // Default response for unknown commands","lastModifiedDate":"2023-08-20"},{"lineNumber":286,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Oscar does not recognise this command\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":287,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":288,"author":{"gitId":"Cikguseven"},"content":" } catch (OscarException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":289,"author":{"gitId":"Cikguseven"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":290,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":291,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":292,"author":{"gitId":"Cikguseven"},"content":" scanner.close();","lastModifiedDate":"2023-08-20"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Cikguseven":292,"-":2}},{"path":"src/main/java/OscarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Class to handle checked exceptions due to incorrect user input","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class OscarException extends Exception{","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" public OscarException(String errorMessage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":8}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Task superclass that supports todo, deadline and event tasks.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" * Taken from hint.","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" private final String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" private final String type;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" * Public constructor that is invoked by subclasses when creating task.","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" public Task(String description, String type) {","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" * Checks if task is done and indicates \"X\" for done and blank otherwise.","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" * @return Indicator of task completion.","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as done.","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Cikguseven"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Cikguseven"},"content":" return \"[\" + this.type + \"][\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":48}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Todo task that contains description of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" * Public constructor of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" super(description, \"T\");","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" * @return Information of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" return super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"todo read book","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":"todo join cca","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":"mark 3","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":"list","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":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":"Cikguseven"},"content":"java -classpath ..\\bin Oscar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cikguseven":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":"Cikguseven"},"content":"java -classpath ../bin Oscar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cikguseven":1,"-":37}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Deadline task that contains description of task and deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" private final String deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" * Public constructor for deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" * @param deadline Deadline of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" super(description, \"D\");","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" * @return Information of deadline.","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" return super.toString() + \" (by: \" + this.deadline + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":25}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Event task that contains description of event,","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" * as well as start and end date/time.","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" private final String start;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" private final String end;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" * Public constructor for event.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" * @param start Start date/time of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" * @param end End date/time of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" super(description, \"E\");","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" * @return Information of event.","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" return super.toString() +","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":" \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":30}},{"path":"src/main/java/Oscar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" * Chatbot named Oscar that can respond to user input.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":"public class Oscar {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" static ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" static final String FILE_DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" static final String FILE_LOCATION \u003d FILE_DIRECTORY + \"/tasklist\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" enum Commands {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" DELETE,","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" EVENT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" * Initialises Oscar from a local saved file.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":" * Solution adapted by \u003ca href\u003d\"https://howtodoinjava.com/java/collections/arraylist/","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" * serialize-deserialize-arraylist/\"\u003e...\u003c/a\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Cikguseven"},"content":" private static void init() throws OscarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Cikguseven"},"content":" File savedFile \u003d new File(FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Cikguseven"},"content":" if (savedFile.exists() \u0026\u0026 !savedFile.isDirectory()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Cikguseven"},"content":" FileInputStream fileInputStream \u003d new FileInputStream(savedFile);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Cikguseven"},"content":" ObjectInputStream objectInputStream \u003d new ObjectInputStream(fileInputStream);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Cikguseven"},"content":" taskList \u003d (ArrayList\u003cTask\u003e) objectInputStream.readObject();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has successfully loaded the saved task list.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Cikguseven"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! There is an error loading the saved task list.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Cikguseven"},"content":" } catch (ClassNotFoundException c) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Class cannot be found.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Cikguseven"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Oscar cannot find a save task list to load.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Cikguseven"},"content":" * Saves the current taskList to a text file after executing a command.","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Cikguseven"},"content":" * Solution adapted by \u003ca href\u003d\"https://howtodoinjava.com/java/collections/arraylist/","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Cikguseven"},"content":" * serialize-deserialize-arraylist/\"\u003e...\u003c/a\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Unable to serialise taskList.","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Cikguseven"},"content":" private static void save() throws OscarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Cikguseven"},"content":" Files.createDirectories(Paths.get(FILE_DIRECTORY));","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Cikguseven"},"content":" FileOutputStream fileOutputStream \u003d new FileOutputStream(FILE_LOCATION);","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Cikguseven"},"content":" ObjectOutputStream objectOutputStream \u003d new ObjectOutputStream(fileOutputStream);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Cikguseven"},"content":" objectOutputStream.writeObject(taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has saved your task list!\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Cikguseven"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! File is not found.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Cikguseven"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! There is an issue with input or output.\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Cikguseven"},"content":" * Displays message to greet user.","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"Cikguseven"},"content":" private static void greet() {","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Hello! This is Oscar, your friendly chatbot :)\");","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"What can Oscar do for you?\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"Cikguseven"},"content":" * Displays message when terminating Duke.","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"Cikguseven"},"content":" private static void bye() {","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Goodbye for now. \" +","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"Cikguseven"},"content":" \"Oscar hopes to see you again soon!\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"Cikguseven"},"content":" * Lists stored tasks in chronological order of addition.","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"Cikguseven"},"content":" private static void list() {","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"Cikguseven"},"content":" for (int i \u003d 1; i \u003c\u003d taskList.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(i - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"Cikguseven"},"content":" System.out.println(i + \".\" + currentTask.toString());","lastModifiedDate":"2023-08-20"},{"lineNumber":93,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"Cikguseven"},"content":" System.out.println();","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":96,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"Cikguseven"},"content":" * Displays the number of tasks stored in Oscar.","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"Cikguseven"},"content":" private static void listCount() {","lastModifiedDate":"2023-08-20"},{"lineNumber":101,"author":{"gitId":"Cikguseven"},"content":" int listSize \u003d taskList.size();","lastModifiedDate":"2023-08-20"},{"lineNumber":102,"author":{"gitId":"Cikguseven"},"content":" if (listSize \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You have no tasks in the list. Add some now!\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"Cikguseven"},"content":" } else if (listSize \u003d\u003d 1) {","lastModifiedDate":"2023-08-20"},{"lineNumber":105,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You have 1 task in the list.\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":106,"author":{"gitId":"Cikguseven"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":107,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"You now have \" + listSize + \" tasks in the list.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":109,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":110,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":111,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":112,"author":{"gitId":"Cikguseven"},"content":" * Marks a task as done using the task number.","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be marked as done.","lastModifiedDate":"2023-08-20"},{"lineNumber":114,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":116,"author":{"gitId":"Cikguseven"},"content":" private static void mark(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":118,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":119,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":120,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":121,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"Cikguseven"},"content":" \"Please enter the number of the task to be marked as done.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":124,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":125,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":128,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":129,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":132,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":133,"author":{"gitId":"Cikguseven"},"content":" currentTask.markAsDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":134,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Nice! Oscar has marked this task as done:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":135,"author":{"gitId":"Cikguseven"},"content":" System.out.println(currentTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":136,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":137,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":138,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":139,"author":{"gitId":"Cikguseven"},"content":" * Marks a task as not done using the task number.","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be marked as not done.","lastModifiedDate":"2023-08-20"},{"lineNumber":141,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":143,"author":{"gitId":"Cikguseven"},"content":" private static void unmark(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":145,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":146,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":147,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":148,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Please enter the order \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"Cikguseven"},"content":" \"of the task to be marked as not done.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":150,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":151,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":154,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":155,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":156,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":158,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":159,"author":{"gitId":"Cikguseven"},"content":" Task currentTask \u003d taskList.get(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":160,"author":{"gitId":"Cikguseven"},"content":" currentTask.markAsNotDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":161,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has marked this task as not done yet:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"Cikguseven"},"content":" System.out.println(currentTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":164,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":165,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":166,"author":{"gitId":"Cikguseven"},"content":" * Deletes a task using the task number.","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"Cikguseven"},"content":" * @param index Number of task to be deleted.","lastModifiedDate":"2023-08-20"},{"lineNumber":168,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Failure of task number validation.","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":170,"author":{"gitId":"Cikguseven"},"content":" private static void delete(String index) throws OscarException {","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"Cikguseven"},"content":" int taskIndex;","lastModifiedDate":"2023-08-20"},{"lineNumber":172,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":173,"author":{"gitId":"Cikguseven"},"content":" taskIndex \u003d Integer.parseInt(index) - 1;","lastModifiedDate":"2023-08-20"},{"lineNumber":174,"author":{"gitId":"Cikguseven"},"content":" } catch(NumberFormatException e){","lastModifiedDate":"2023-08-20"},{"lineNumber":175,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Please enter the order \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":176,"author":{"gitId":"Cikguseven"},"content":" \"of the task to be deleted.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":177,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"Cikguseven"},"content":" if (taskIndex \u003c 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":180,"author":{"gitId":"Cikguseven"},"content":" \"Task numbers must be natural numbers.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":181,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"Cikguseven"},"content":" } else if (taskIndex \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-20"},{"lineNumber":183,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"Cikguseven"},"content":" \"Task number is too large.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":185,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":186,"author":{"gitId":"Cikguseven"},"content":" Task removedTask \u003d taskList.remove(taskIndex);","lastModifiedDate":"2023-08-20"},{"lineNumber":187,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has removed this task:\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":188,"author":{"gitId":"Cikguseven"},"content":" System.out.println(removedTask + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":189,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":190,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":191,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":192,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":193,"author":{"gitId":"Cikguseven"},"content":" * Creates a new todo task and save it to the collection.","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of todo task.","lastModifiedDate":"2023-08-20"},{"lineNumber":195,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Todo missing description.","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":197,"author":{"gitId":"Cikguseven"},"content":" private static void todo(String description) throws OscarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":199,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":200,"author":{"gitId":"Cikguseven"},"content":" \"The description of a todo task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":201,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":202,"author":{"gitId":"Cikguseven"},"content":" Task newTodo \u003d new Todo(description);","lastModifiedDate":"2023-08-20"},{"lineNumber":203,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newTodo);","lastModifiedDate":"2023-08-20"},{"lineNumber":204,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newTodo + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":207,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":208,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":209,"author":{"gitId":"Cikguseven"},"content":" * Creates a new deadline task and save it to the collection.","lastModifiedDate":"2023-08-28"},{"lineNumber":210,"author":{"gitId":"Cikguseven"},"content":" * @param details Information about the details and deadline of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":211,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Deadline missing details.","lastModifiedDate":"2023-08-27"},{"lineNumber":212,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":213,"author":{"gitId":"Cikguseven"},"content":" private static void deadline(String details) throws OscarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":214,"author":{"gitId":"Cikguseven"},"content":" if (!details.contains(\" /by \")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":215,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":216,"author":{"gitId":"Cikguseven"},"content":" \"The deadline task is not formatted correctly.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":217,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":218,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d details.split(\" /by \", 2);","lastModifiedDate":"2023-08-20"},{"lineNumber":219,"author":{"gitId":"Cikguseven"},"content":" String description \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":220,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":221,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":222,"author":{"gitId":"Cikguseven"},"content":" \"The description of a deadline task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":223,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":224,"author":{"gitId":"Cikguseven"},"content":" String deadline \u003d split[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":225,"author":{"gitId":"Cikguseven"},"content":" if (deadline.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":226,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":227,"author":{"gitId":"Cikguseven"},"content":" \"The deadline of a deadline task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":228,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":229,"author":{"gitId":"Cikguseven"},"content":" Task newDeadline \u003d new Deadline(description, deadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":230,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2023-08-20"},{"lineNumber":231,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newDeadline + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":232,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":233,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":234,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":235,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":236,"author":{"gitId":"Cikguseven"},"content":" * Creates a new event task and save it to the collection.","lastModifiedDate":"2023-08-28"},{"lineNumber":237,"author":{"gitId":"Cikguseven"},"content":" * @param details Information about the details, as well as start and end","lastModifiedDate":"2023-08-20"},{"lineNumber":238,"author":{"gitId":"Cikguseven"},"content":" * date/time of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":239,"author":{"gitId":"Cikguseven"},"content":" * @throws OscarException Event missing details.","lastModifiedDate":"2023-08-27"},{"lineNumber":240,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":241,"author":{"gitId":"Cikguseven"},"content":" private static void event(String details) throws OscarException {","lastModifiedDate":"2023-08-28"},{"lineNumber":242,"author":{"gitId":"Cikguseven"},"content":" if (!details.contains(\" /from \") || !details.contains(\" /to \")) {","lastModifiedDate":"2023-08-20"},{"lineNumber":243,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":244,"author":{"gitId":"Cikguseven"},"content":" \"The event task is not formatted correctly.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":245,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":246,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d details.split(\" /from | /to \");","lastModifiedDate":"2023-08-20"},{"lineNumber":247,"author":{"gitId":"Cikguseven"},"content":" String description \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":248,"author":{"gitId":"Cikguseven"},"content":" if (description.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":249,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":250,"author":{"gitId":"Cikguseven"},"content":" \"The description of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":251,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":252,"author":{"gitId":"Cikguseven"},"content":" String start \u003d split[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":253,"author":{"gitId":"Cikguseven"},"content":" if (start.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":254,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":255,"author":{"gitId":"Cikguseven"},"content":" \"The start date/time of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":256,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":257,"author":{"gitId":"Cikguseven"},"content":" String end \u003d split[2];","lastModifiedDate":"2023-08-20"},{"lineNumber":258,"author":{"gitId":"Cikguseven"},"content":" if (end.length() \u003d\u003d 0) {","lastModifiedDate":"2023-08-20"},{"lineNumber":259,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":260,"author":{"gitId":"Cikguseven"},"content":" \"The end date/time of an event task cannot be empty.\\n\");","lastModifiedDate":"2023-08-21"},{"lineNumber":261,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":262,"author":{"gitId":"Cikguseven"},"content":" Task newEvent \u003d new Event(description, start, end);","lastModifiedDate":"2023-08-20"},{"lineNumber":263,"author":{"gitId":"Cikguseven"},"content":" taskList.add(newEvent);","lastModifiedDate":"2023-08-20"},{"lineNumber":264,"author":{"gitId":"Cikguseven"},"content":" System.out.println(\"Oscar has added:\\n\" + newEvent + \"\\n\");","lastModifiedDate":"2023-08-20"},{"lineNumber":265,"author":{"gitId":"Cikguseven"},"content":" listCount();","lastModifiedDate":"2023-08-20"},{"lineNumber":266,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":267,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":268,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":269,"author":{"gitId":"Cikguseven"},"content":" * Programme flow to run Oscar.","lastModifiedDate":"2023-08-28"},{"lineNumber":270,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":271,"author":{"gitId":"Cikguseven"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":272,"author":{"gitId":"Cikguseven"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-19"},{"lineNumber":273,"author":{"gitId":"Cikguseven"},"content":" boolean running \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":274,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":275,"author":{"gitId":"Cikguseven"},"content":" greet();","lastModifiedDate":"2023-08-20"},{"lineNumber":276,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":277,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":278,"author":{"gitId":"Cikguseven"},"content":" init();","lastModifiedDate":"2023-08-28"},{"lineNumber":279,"author":{"gitId":"Cikguseven"},"content":" } catch (OscarException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":280,"author":{"gitId":"Cikguseven"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":281,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":282,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":283,"author":{"gitId":"Cikguseven"},"content":" while (running) {","lastModifiedDate":"2023-08-20"},{"lineNumber":284,"author":{"gitId":"Cikguseven"},"content":" // Obtain command and details entered by user to determine the next","lastModifiedDate":"2023-08-20"},{"lineNumber":285,"author":{"gitId":"Cikguseven"},"content":" // course of action","lastModifiedDate":"2023-08-20"},{"lineNumber":286,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":287,"author":{"gitId":"Cikguseven"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":288,"author":{"gitId":"Cikguseven"},"content":" String[] split \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-20"},{"lineNumber":289,"author":{"gitId":"Cikguseven"},"content":" String command \u003d split[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":290,"author":{"gitId":"Cikguseven"},"content":" Commands c;","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"Cikguseven"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":292,"author":{"gitId":"Cikguseven"},"content":" c \u003d Commands.valueOf(split[0].toUpperCase());","lastModifiedDate":"2023-08-24"},{"lineNumber":293,"author":{"gitId":"Cikguseven"},"content":" String details \u003d userInput.length() \u003e command.length() ? split[1] : \"\";","lastModifiedDate":"2023-08-20"},{"lineNumber":294,"author":{"gitId":"Cikguseven"},"content":" switch (c) {","lastModifiedDate":"2023-08-24"},{"lineNumber":295,"author":{"gitId":"Cikguseven"},"content":" // Exit programme if user enters \"bye\" command","lastModifiedDate":"2023-08-19"},{"lineNumber":296,"author":{"gitId":"Cikguseven"},"content":" case BYE:","lastModifiedDate":"2023-08-24"},{"lineNumber":297,"author":{"gitId":"Cikguseven"},"content":" bye();","lastModifiedDate":"2023-08-20"},{"lineNumber":298,"author":{"gitId":"Cikguseven"},"content":" running \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":299,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":300,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":301,"author":{"gitId":"Cikguseven"},"content":" // Display text stored by user in chronological order if","lastModifiedDate":"2023-08-19"},{"lineNumber":302,"author":{"gitId":"Cikguseven"},"content":" // user enters \"list\" command","lastModifiedDate":"2023-08-19"},{"lineNumber":303,"author":{"gitId":"Cikguseven"},"content":" case LIST:","lastModifiedDate":"2023-08-24"},{"lineNumber":304,"author":{"gitId":"Cikguseven"},"content":" list();","lastModifiedDate":"2023-08-20"},{"lineNumber":305,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":306,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":307,"author":{"gitId":"Cikguseven"},"content":" // Mark task as done if user enters \"mark\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":308,"author":{"gitId":"Cikguseven"},"content":" case MARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":309,"author":{"gitId":"Cikguseven"},"content":" mark(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":310,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":311,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":312,"author":{"gitId":"Cikguseven"},"content":" // Mark task as not done if user enters \"unmark\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":313,"author":{"gitId":"Cikguseven"},"content":" case UNMARK:","lastModifiedDate":"2023-08-24"},{"lineNumber":314,"author":{"gitId":"Cikguseven"},"content":" unmark(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":315,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":316,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":317,"author":{"gitId":"Cikguseven"},"content":" // Delete a task if user enters \"delete\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":318,"author":{"gitId":"Cikguseven"},"content":" case DELETE:","lastModifiedDate":"2023-08-24"},{"lineNumber":319,"author":{"gitId":"Cikguseven"},"content":" delete(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":320,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":321,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":322,"author":{"gitId":"Cikguseven"},"content":" // Create a new todo task if user enters \"todo\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":323,"author":{"gitId":"Cikguseven"},"content":" case TODO:","lastModifiedDate":"2023-08-24"},{"lineNumber":324,"author":{"gitId":"Cikguseven"},"content":" todo(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":325,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":326,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":327,"author":{"gitId":"Cikguseven"},"content":" // Create a new deadline task if user enters \"deadline\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":328,"author":{"gitId":"Cikguseven"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-24"},{"lineNumber":329,"author":{"gitId":"Cikguseven"},"content":" deadline(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":330,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":331,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":332,"author":{"gitId":"Cikguseven"},"content":" // Create a new event task if user enters \"event\" command","lastModifiedDate":"2023-08-20"},{"lineNumber":333,"author":{"gitId":"Cikguseven"},"content":" case EVENT:","lastModifiedDate":"2023-08-24"},{"lineNumber":334,"author":{"gitId":"Cikguseven"},"content":" event(details);","lastModifiedDate":"2023-08-20"},{"lineNumber":335,"author":{"gitId":"Cikguseven"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":336,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":337,"author":{"gitId":"Cikguseven"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":338,"author":{"gitId":"Cikguseven"},"content":" // Default response for unknown commands","lastModifiedDate":"2023-08-20"},{"lineNumber":339,"author":{"gitId":"Cikguseven"},"content":" throw new OscarException(\"Sorry! Oscar does not recognise this command\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":340,"author":{"gitId":"Cikguseven"},"content":" } finally {","lastModifiedDate":"2023-08-28"},{"lineNumber":341,"author":{"gitId":"Cikguseven"},"content":" save();","lastModifiedDate":"2023-08-28"},{"lineNumber":342,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":343,"author":{"gitId":"Cikguseven"},"content":" } catch (OscarException e){","lastModifiedDate":"2023-08-27"},{"lineNumber":344,"author":{"gitId":"Cikguseven"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-21"},{"lineNumber":345,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":346,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":347,"author":{"gitId":"Cikguseven"},"content":" scanner.close();","lastModifiedDate":"2023-08-20"},{"lineNumber":348,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":349,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Cikguseven":347,"-":2}},{"path":"src/main/java/OscarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Class to handle checked exceptions due to incorrect user input","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class OscarException extends Exception{","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" public OscarException(String errorMessage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":8}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":" * Task superclass that supports todo, deadline and event tasks.","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" * Taken from hint.","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":"abstract public class Task implements Serializable {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" private final String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" private final String type;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" * Public constructor that is invoked by subclasses when creating task.","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" public Task(String description, String type) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Cikguseven"},"content":" * Checks if task is done and indicates \"X\" for done and blank otherwise.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Cikguseven"},"content":" * @return Indicator of task completion.","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Cikguseven"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Cikguseven"},"content":" return (this.isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as done.","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Cikguseven"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Cikguseven"},"content":" * Mark a task as not done.","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"Cikguseven"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Cikguseven"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Cikguseven"},"content":" return \"[\" + this.type + \"][\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":50}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":" * Todo task that contains description of task.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":" * Public constructor of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":" * @param description Details of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Cikguseven"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Cikguseven"},"content":" super(description, \"T\");","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Cikguseven"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Cikguseven"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Cikguseven"},"content":" * Detailed string representation of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Cikguseven"},"content":" * @return Information of todo.","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Cikguseven"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Cikguseven"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Cikguseven"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Cikguseven"},"content":" return super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Cikguseven"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Cikguseven"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Cikguseven"},"content":"todo read book","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Cikguseven"},"content":"todo join cca","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Cikguseven"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Cikguseven"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Cikguseven"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Cikguseven"},"content":"mark 3","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Cikguseven"},"content":"list","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Cikguseven":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":"Cikguseven"},"content":"java -classpath ..\\bin Oscar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cikguseven":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":"Cikguseven"},"content":"java -classpath ../bin Oscar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Cikguseven":1,"-":37}}] diff --git a/Cikguseven_ip_master/commits.json b/Cikguseven_ip_master/commits.json index 973faeb0..aa198400 100644 --- a/Cikguseven_ip_master/commits.json +++ b/Cikguseven_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Cikguseven":[{"date":"2023-08-19","commitResults":[{"hash":"663bcb81dc5739c3e02e98e6f1718c38f7ed2dee","isMergeCommit":false,"messageTitle":"Initial skeleton version of Oscar chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"0b9264c8a47b2056235f9686b9601d977ae154f2","isMergeCommit":false,"messageTitle":"Skeletal version of Oscar with echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"98b0dd237b966b70a421e0ba7d2ee8047f620726","isMergeCommit":false,"messageTitle":"Oscar can now store user text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}}]},{"date":"2023-08-20","commitResults":[{"hash":"6ced18dc14e12f5c1a8b505e6bac172697a8187d","isMergeCommit":false,"messageTitle":"Completed Level 3 with mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":12}}},{"hash":"2f18cc5aaa3945228b317edc20893e4eebd67566","isMergeCommit":false,"messageTitle":"Completed Level 4.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":45}}},{"hash":"dafea925a8f56c07984ebc6498b67c95e613872b","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":0}}},{"hash":"b31e048fdfd2bb7ef1862fb9214bf8967b34c23d","isMergeCommit":false,"messageTitle":"Completed Level 5.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":58}}},{"hash":"55b8f3df5e1fd7f4eff1e6bb2db1d9cbdaff6fda","isMergeCommit":false,"messageTitle":"Completed Level 6.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}}]},{"date":"2023-08-21","commitResults":[{"hash":"9fe064f8900c160ccc615fe7cdd31a64557e0780","isMergeCommit":false,"messageTitle":"Fixed exception handling in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":61}}}]},{"date":"2023-08-24","commitResults":[{"hash":"5cf7524eca6064ca05be50110a32601751417ff0","isMergeCommit":false,"messageTitle":"Added enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":39}}},{"hash":"fadc881c97aeff8d19453dbabc86db519cbbbba9","isMergeCommit":false,"messageTitle":"Renamed Duke.java to Oscar.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"770dae71de2db6adff8c9fc23e9187b1e05b5ead","isMergeCommit":false,"messageTitle":"Renamed DukeException.java to OscarException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"eb1fcb3ce2442865389f3a6ad69b6c60a1669403","isMergeCommit":false,"messageTitle":"Reformat case statements.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":69}}}]}]},"authorFileTypeContributionMap":{"Cikguseven":{"java":424,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"Cikguseven":30925.85},"authorDisplayNameMap":{"Cikguseven":"CS2103T-T11-1 KIER.. WEI"}} +{"authorDailyContributionsMap":{"Cikguseven":[{"date":"2023-08-19","commitResults":[{"hash":"663bcb81dc5739c3e02e98e6f1718c38f7ed2dee","isMergeCommit":false,"messageTitle":"Initial skeleton version of Oscar chatbot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"0b9264c8a47b2056235f9686b9601d977ae154f2","isMergeCommit":false,"messageTitle":"Skeletal version of Oscar with echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":7}}},{"hash":"98b0dd237b966b70a421e0ba7d2ee8047f620726","isMergeCommit":false,"messageTitle":"Oscar can now store user text","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}}]},{"date":"2023-08-20","commitResults":[{"hash":"6ced18dc14e12f5c1a8b505e6bac172697a8187d","isMergeCommit":false,"messageTitle":"Completed Level 3 with mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":12}}},{"hash":"2f18cc5aaa3945228b317edc20893e4eebd67566","isMergeCommit":false,"messageTitle":"Completed Level 4.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":45}}},{"hash":"dafea925a8f56c07984ebc6498b67c95e613872b","isMergeCommit":false,"messageTitle":"Completed A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":1,"deletions":0}}},{"hash":"b31e048fdfd2bb7ef1862fb9214bf8967b34c23d","isMergeCommit":false,"messageTitle":"Completed Level 5.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":58}}},{"hash":"55b8f3df5e1fd7f4eff1e6bb2db1d9cbdaff6fda","isMergeCommit":false,"messageTitle":"Completed Level 6.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":0}}}]},{"date":"2023-08-21","commitResults":[{"hash":"9fe064f8900c160ccc615fe7cdd31a64557e0780","isMergeCommit":false,"messageTitle":"Fixed exception handling in Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":61}}}]},{"date":"2023-08-24","commitResults":[{"hash":"5cf7524eca6064ca05be50110a32601751417ff0","isMergeCommit":false,"messageTitle":"Added enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":39}}},{"hash":"fadc881c97aeff8d19453dbabc86db519cbbbba9","isMergeCommit":false,"messageTitle":"Renamed Duke.java to Oscar.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"770dae71de2db6adff8c9fc23e9187b1e05b5ead","isMergeCommit":false,"messageTitle":"Renamed DukeException.java to OscarException.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"eb1fcb3ce2442865389f3a6ad69b6c60a1669403","isMergeCommit":false,"messageTitle":"Reformat case statements.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":69}}}]},{"date":"2023-08-28","commitResults":[{"hash":"856d55a673761f5511bc44849cd9397e3540728b","isMergeCommit":false,"messageTitle":"Add Level 7 features","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":16}}},{"hash":"b633d08107fbed8e0905529c8ec65241aacbd86c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Cikguseven":{"java":481,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":7}},"authorContributionVariance":{"Cikguseven":28131.783},"authorDisplayNameMap":{"Cikguseven":"CS2103T-T11-1 KIER.. WEI"}} diff --git a/Daphne789_ip_master/authorship.json b/Daphne789_ip_master/authorship.json index 7709b14c..904c683b 100644 --- a/Daphne789_ip_master/authorship.json +++ b/Daphne789_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"T | 0 | buy bread","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":1}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" public LocalDate getBy() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":20}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":5}},{"path":"src/main/java/EchoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.util.logging.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"public class EchoBot {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" public static int extractTaskNum(String userInput, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" String taskNumberStr \u003d userInput.substring(command.length()).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" return Integer.parseInt(taskNumberStr);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" public static String extractTaskDesc(String userInput, String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" return userInput.substring(command.length()).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" private static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" private static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" // Load tasks from the file","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" public static ArrayList\u003cTask\u003e loadTasks(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":" File folder \u003d file.getParentFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" // Create the parent folder if it doesn\u0027t exist","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" if (!folder.exists() \u0026\u0026 !folder.mkdirs()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"Unable to create directory: \" + folder.getAbsolutePath());","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" return tasks; // Return an empty list","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" if (!file.exists() \u0026\u0026 !file.createNewFile()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"Unable to create file: \" + filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":" return tasks; // Return an empty list","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" String formattedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" if (formattedTask.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" continue; // Skip empty lines","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Daphne789"},"content":" Task task \u003d Task.fromFileString(formattedTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Daphne789"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Daphne789"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Daphne789"},"content":" // Handle corrupted data - logging the issue","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Daphne789"},"content":" Logger logger \u003d Logger.getLogger(EchoBot.class.getName());","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Daphne789"},"content":" logger.log(Level.SEVERE, \"Corrupted data: \" + formattedTask, e);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Daphne789"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"Invalid data: \" + formattedTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Daphne789"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Daphne789"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"An error occurred while handling file operations: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Daphne789"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Daphne789"},"content":" Logger logger \u003d Logger.getLogger(EchoBot.class.getName());","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Daphne789"},"content":" logger.log(Level.SEVERE, \"An error occurred while loading tasks\", e);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Daphne789"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Daphne789"},"content":" // Save tasks to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Daphne789"},"content":" public static void saveTasks(ArrayList\u003cTask\u003e tasks, String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Daphne789"},"content":" try (PrintWriter writer \u003d new PrintWriter(filePath)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Daphne789"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Daphne789"},"content":" writer.println(task.toFileString());","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Daphne789"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Daphne789"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"Daphne789"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"Daphne789"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"Daphne789"},"content":" + \" | _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"Daphne789"},"content":" + \" | | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"Daphne789"},"content":" + \" | |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"Daphne789"},"content":" + \" |____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"Daphne789"},"content":" String horizontalLine \u003d \" _____________________________________________________________\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"Daphne789"},"content":" String filePath \u003d \"./data/duke.txt\"; // Default path","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"Daphne789"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Hello! I\u0027m EchoBot\\n\" + logo);","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" What can I do for you?\\n\" + horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Daphne789"},"content":" tasks \u003d loadTasks(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Daphne789"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"An error occurred while loading tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Daphne789"},"content":" while(true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"Daphne789"},"content":" // Read the user input","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"Daphne789"},"content":" String userInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"Daphne789"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Bye. Hope to see you again soon!\\n\" + horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"Daphne789"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"Daphne789"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" \" + (i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d extractTaskDesc(userInput, \"todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"Daphne789"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"Daphne789"},"content":" throw new DukeException(horizontalLine + \" ☹ OOPS!!! The description of a todo cannot be empty.\"","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"Daphne789"},"content":" + \"\\n\"+ horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"Daphne789"},"content":" Task newTodo \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"Daphne789"},"content":" tasks.add(newTodo);","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Got it. I\u0027ve added this task:\\n\" + \" \" + newTodo);","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after adding","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"Daphne789"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"Daphne789"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d extractTaskDesc(userInput, \"deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"Daphne789"},"content":" int indexOfBy \u003d taskDescription.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"Daphne789"},"content":" String deadlineDescription \u003d taskDescription.substring(0, indexOfBy).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"Daphne789"},"content":" String by \u003d taskDescription.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"Daphne789"},"content":" Task newDeadline \u003d new Deadline(deadlineDescription, parseDate(by));","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"Daphne789"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Got it. I\u0027ve added this task:\\n\" + \" \" + newDeadline);","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after adding","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d extractTaskDesc(userInput, \"event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"Daphne789"},"content":" int indexOfFrom \u003d taskDescription.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"Daphne789"},"content":" int indexOfTo \u003d taskDescription.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"Daphne789"},"content":" String eventDescription \u003d taskDescription.substring(0, indexOfFrom).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"Daphne789"},"content":" String from \u003d taskDescription.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"Daphne789"},"content":" String to \u003d taskDescription.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"Daphne789"},"content":" Task newEvent \u003d new Event(eventDescription, parseDateTime(from), parseDateTime(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"Daphne789"},"content":" tasks.add(newEvent);","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Got it. I\u0027ve added this task:\\n\" + \" \" + newEvent);","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after adding","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d extractTaskNum(userInput, \"mark\");","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"Daphne789"},"content":" task.mark();","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" [\" + task.getStatusIcon() + \"] \" + task.getDescription());","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"Daphne789"},"content":" // Additional information","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"Daphne789"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (from: \" + ((Event) task).from + \" to: \" + ((Event) task).to + \")\");","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"Daphne789"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (by: \" + ((Deadline) task).by + \")\");","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after marking","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d extractTaskNum(userInput, \"unmark\");","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"Daphne789"},"content":" task.unmark();","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" [\" + task.getStatusIcon() + \"] \" + task.getDescription());","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"Daphne789"},"content":" // Additional information","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"Daphne789"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (from: \" + ((Event) task).from + \" to: \" + ((Event) task).to + \")\");","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"Daphne789"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (by: \" + ((Deadline) task).by + \")\");","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after unmarking","lastModifiedDate":"2023-08-27"},{"lineNumber":204,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d extractTaskNum(userInput, \"delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"Daphne789"},"content":" Task deletedTask \u003d tasks.remove(taskNum - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" Noted. I\u0027ve removed this task:\\n\" + \" \" + deletedTask.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\\n\" + horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"Daphne789"},"content":" saveTasks(tasks, filePath); // Save after deleting","lastModifiedDate":"2023-08-27"},{"lineNumber":214,"author":{"gitId":"Daphne789"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine + \" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"Daphne789"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Daphne789":220}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":27}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"public class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" protected String description;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" String type \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" String dateTime \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" if (this instanceof Todo) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" type \u003d \"T\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" } else if (this instanceof Deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" type \u003d \"D\";","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" dateTime \u003d \" | \" + ((Deadline) this).getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" type \u003d \"E\";","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" dateTime \u003d \" | \" + ((Event) this).getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")) + \" | \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" ((Event) this).getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" return type + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":" public static Task fromFileString(String fileString) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" String[] parts \u003d fileString.split(\"\\\\s*\\\\|\\\\s*\"); // Adjusted delimiter","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":" // Use parseDate method to convert to LocalDate","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" task \u003d new Deadline(description, parseDate(by));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" // Use parseDateTime method to convert to LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" task \u003d new Event(description, parseDateTime(from), parseDateTime(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":" throw new IllegalArgumentException(\"Invalid task type: \" + type);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Daphne789"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Daphne789"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Daphne789"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Daphne789"},"content":" private static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Daphne789"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Daphne789"},"content":" private static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Daphne789"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Daphne789"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Daphne789"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Daphne789"},"content":" public void mark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Daphne789"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Daphne789"},"content":" public void unmark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Daphne789"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Daphne789"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Daphne789"},"content":" return description;","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Daphne789"},"content":" return \"[\" + getStatusIcon() + \"]\" + \" \" + getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":92}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"todo Borrow a book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"event Project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"bye","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Daphne789":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":"java -classpath ..\\bin EchoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Daphne789":1,"-":20}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"T | 1 | buy bread","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"D | 0 | buy bread | 2023-08-31","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"E | 0 | meeting | 2023-09-04 1200 | 2023-09-04 1500","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"T | 0 | do homework","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"T | 0 | read book","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":5}},{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" private final TaskType taskType;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" private final String taskDescription;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" private final String additionalInfo1;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" private final String additionalInfo2;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" public AddCommand(TaskType taskType, String taskDescription, String additionalInfo1, String additionalInfo2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" this.additionalInfo1 \u003d additionalInfo1;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" this.additionalInfo2 \u003d additionalInfo2;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" public void doCommand(ArrayList\u003cTask\u003e tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" if (taskDescription.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" throw new DukeException(\" Unable to add new task. Task description cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" Task newTask;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" newTask \u003d new Todo(taskDescription);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":" LocalDate byDate \u003d Parser.parseDate(additionalInfo1);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":" newTask \u003d new Deadline(taskDescription, byDate);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" LocalDateTime fromDate \u003d Parser.parseDateTime(additionalInfo1);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" LocalDateTime toDate \u003d Parser.parseDateTime(additionalInfo2);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":" newTask \u003d new Event(taskDescription, fromDate, toDate);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" throw new DukeException(\"Unsupported task type.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" tasks.add(newTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\\n\" + \" \" + newTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":" storage.saveTasks(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":54}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" public enum TaskType {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" TODO, DEADLINE, EVENT","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" public abstract void doCommand(ArrayList\u003cTask\u003e tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" public static int extractTaskNum(String userInput, String command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" String taskNumberStr \u003d userInput.substring(command.length()).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" return Integer.parseInt(taskNumberStr);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" public static String extractTaskDesc(String userInput, String command) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" return userInput.substring(command.length()).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":16}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" public LocalDate getBy() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":20}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" private int taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" public DeleteCommand(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" public void doCommand(ArrayList\u003cTask\u003e tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" Task deletedTask \u003d tasks.remove(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\\n\" + \" \" + deletedTask.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" storage.saveTasks(tasks); // Save after deleting","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":22}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":5}},{"path":"src/main/java/EchoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class EchoBot {","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" String filePath \u003d \"./data/duke.txt\"; // Default path","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" Storage storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" tasks \u003d storage.loadTasks();","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"An error occurred while loading tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" while(true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" // Read the user input","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" String userInput \u003d scanner.nextLine().trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" Ui.showByeMessage();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" Ui.showTasks(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d Command.extractTaskDesc(userInput, \"todo\");","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":" Command addCommand \u003d new AddCommand(Command.TaskType.TODO, taskDescription, null, null);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":" addCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d Command.extractTaskDesc(userInput, \"deadline\");","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" int indexOfBy \u003d taskDescription.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" String deadlineDescription \u003d taskDescription.substring(0, indexOfBy).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" String by \u003d taskDescription.substring(indexOfBy + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":" Command addCommand \u003d new AddCommand(Command.TaskType.DEADLINE, deadlineDescription, by, null);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":" addCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" String taskDescription \u003d Command.extractTaskDesc(userInput, \"event\");","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":" int indexOfFrom \u003d taskDescription.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":" int indexOfTo \u003d taskDescription.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" String eventDescription \u003d taskDescription.substring(0, indexOfFrom).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":" String from \u003d taskDescription.substring(indexOfFrom + 5, indexOfTo).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" String to \u003d taskDescription.substring(indexOfTo + 3).trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" Command addCommand \u003d new AddCommand(Command.TaskType.EVENT, eventDescription, from, to);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" addCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d Command.extractTaskNum(userInput, \"mark\");","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" Command markCommand \u003d new MarkCommand(taskNum);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" markCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d Command.extractTaskNum(userInput, \"unmark\");","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Daphne789"},"content":" Command unmarkCommand \u003d new UnmarkCommand(taskNum);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Daphne789"},"content":" unmarkCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Daphne789"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Daphne789"},"content":" int taskNum \u003d Command.extractTaskNum(userInput, \"delete\");","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Daphne789"},"content":" Command deleteCommand \u003d new DeleteCommand(taskNum);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Daphne789"},"content":" deleteCommand.doCommand(tasks, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Daphne789"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" ☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Daphne789":68}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":27}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" private int taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" public MarkCommand(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" public void doCommand(ArrayList\u003cTask\u003e tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" task.mark();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" [\" + task.getStatusIcon() + \"] \" + task.getDescription());","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" // Additional information","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (from: \" + ((Event) task).from + \" to: \" + ((Event) task).to + \")\");","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (by: \" + ((Deadline) task).by + \")\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" storage.saveTasks(tasks); // Save after marking","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":31}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" public static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" public static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":13}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"import java.util.logging.Level;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" private String filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" // Load tasks from the file and return them","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" File folder \u003d file.getParentFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" // Create the parent folder if it doesn\u0027t exist","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" if (!folder.exists() \u0026\u0026 !folder.mkdirs()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"Unable to create directory: \" + folder.getAbsolutePath());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" return tasks; // Return an empty list","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" if (!file.exists() \u0026\u0026 !file.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"Unable to create file: \" + filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":" return tasks; // Return an empty list","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" String formattedTask \u003d scanner.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":" if (formattedTask.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":" continue; // Skip empty lines","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" Task task \u003d Task.fromFileString(formattedTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" // Handle corrupted data - logging the issue","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" Logger logger \u003d Logger.getLogger(EchoBot.class.getName());","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":" logger.log(Level.SEVERE, \"Corrupted data: \" + formattedTask, e);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"Invalid data: \" + formattedTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Daphne789"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Daphne789"},"content":" System.err.println(\"An error occurred while handling file operations: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"Daphne789"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Daphne789"},"content":" Logger logger \u003d Logger.getLogger(EchoBot.class.getName());","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Daphne789"},"content":" logger.log(Level.SEVERE, \"An error occurred while loading tasks\", e);","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Daphne789"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Daphne789"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Daphne789"},"content":" // Save tasks to the file","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"Daphne789"},"content":" try (PrintWriter writer \u003d new PrintWriter(filePath)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Daphne789"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Daphne789"},"content":" writer.println(task.toFileString());","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Daphne789"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Daphne789"},"content":" System.out.println(\"Error saving tasks: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":76}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"public class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" protected String description;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" String type \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" String dateTime \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" if (this instanceof Todo) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" type \u003d \"T\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" } else if (this instanceof Deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" type \u003d \"D\";","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" dateTime \u003d \" | \" + ((Deadline) this).getBy().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" } else if (this instanceof Event) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" type \u003d \"E\";","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" dateTime \u003d \" | \" + ((Event) this).getFrom().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\")) + \" | \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" ((Event) this).getTo().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" return type + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + dateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":" public static Task fromFileString(String fileString) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" String[] parts \u003d fileString.split(\"\\\\s*\\\\|\\\\s*\"); // Adjusted delimiter","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Daphne789"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Daphne789"},"content":" task \u003d new Todo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Daphne789"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Daphne789"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Daphne789"},"content":" // Use parseDate method to convert to LocalDate","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Daphne789"},"content":" task \u003d new Deadline(description, parseDate(by));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Daphne789"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Daphne789"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Daphne789"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Daphne789"},"content":" // Use parseDateTime method to convert to LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Daphne789"},"content":" task \u003d new Event(description, parseDateTime(from), parseDateTime(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Daphne789"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Daphne789"},"content":" throw new IllegalArgumentException(\"Invalid task type: \" + type);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Daphne789"},"content":" if (isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Daphne789"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Daphne789"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Daphne789"},"content":" private static LocalDateTime parseDateTime(String dateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Daphne789"},"content":" return LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Daphne789"},"content":" private static LocalDate parseDate(String date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Daphne789"},"content":" return LocalDate.parse(date, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Daphne789"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Daphne789"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Daphne789"},"content":" public void mark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Daphne789"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Daphne789"},"content":" public void unmark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Daphne789"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Daphne789"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Daphne789"},"content":" return description;","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Daphne789"},"content":" return \"[\" + getStatusIcon() + \"]\" + \" \" + getDescription();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":92}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":" super(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Daphne789":10}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":" public static void showLogo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" ____ _ \\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" + \" | _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" + \" | | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":" + \" | |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" + \" |____/ \\\\__,_|_|\\\\_\\\\___|\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" public static void showHorizontalLine() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" ____________________________________________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Hello! I\u0027m EchoBot\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" showLogo();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" What can I do for you?\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" public static void showTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" \" + (i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":" showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Daphne789"},"content":" public static void showByeMessage() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Daphne789"},"content":" showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Daphne789"},"content":" showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":39}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":" private int taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":" public UnmarkCommand(int taskNum) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":" this.taskNum \u003d taskNum;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":" public void doCommand(ArrayList\u003cTask\u003e tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":" if (taskNum \u003e\u003d 1 \u0026\u0026 taskNum \u003c\u003d tasks.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Daphne789"},"content":" Task task \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Daphne789"},"content":" task.unmark();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Daphne789"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" [\" + task.getStatusIcon() + \"] \" + task.getDescription());","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":" // Additional information","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Daphne789"},"content":" if (task instanceof Event) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (from: \" + ((Event) task).from + \" to: \" + ((Event) task).to + \")\");","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Daphne789"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Daphne789"},"content":" System.out.print(\" (by: \" + ((Deadline) task).by + \")\");","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Daphne789"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Daphne789"},"content":" Ui.showHorizontalLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Daphne789"},"content":" storage.saveTasks(tasks); // Save after unmarking","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Daphne789"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"Daphne789"},"content":"}","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Daphne789":31}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Daphne789"},"content":"todo Borrow a book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Daphne789"},"content":"deadline Return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Daphne789"},"content":"event Project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Daphne789"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Daphne789"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Daphne789"},"content":"unmark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"Daphne789"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"Daphne789"},"content":"bye","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Daphne789"},"content":"","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Daphne789":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Daphne789"},"content":"java -classpath ..\\bin EchoBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Daphne789":1,"-":20}}] diff --git a/Daphne789_ip_master/commits.json b/Daphne789_ip_master/commits.json index 6303a44f..147762fa 100644 --- a/Daphne789_ip_master/commits.json +++ b/Daphne789_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Daphne789":[{"date":"2023-08-23","commitResults":[{"hash":"02362df3ee1bd96d425091d823cb48a39c26db89","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"029ef0a5e7db2e9286638e9457a0649a37a5b3b1","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":9}}},{"hash":"749104536ba6b267681330de4d2c7035605043e3","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0269005894a469eb608b45cebf8be842afbfa495","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"6c3165a9542d74e17644e1089af56103d508a632","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":8}}},{"hash":"a30c7ee6837d5d8a0513db218ac2000d5b12997f","isMergeCommit":false,"messageTitle":"Completed Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"1e8ba8a5b13e39de9e6fa356f3f5188b940f695a","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}},{"hash":"d2a8ab6674f7741b14ac0125d623357cecf326e5","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":25}}}]},{"date":"2023-08-27","commitResults":[{"hash":"828ffdc231f95f3b94b5c6320a311d54266def58","isMergeCommit":false,"messageTitle":"Separate class into a new file","messageBody":"","tags":["release-1"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":0}}},{"hash":"f584933dac1798469569ce7a270a73e499f5ed58","isMergeCommit":false,"messageTitle":"Remove some classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":78}}},{"hash":"2cb64741aa0d6692d2caebd138d87a7617d52444","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":129,"deletions":3}}},{"hash":"6cfcbb88915c09d0463d409d43f35ca181ac5ec8","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":55,"deletions":21}}},{"hash":"dda36dd2ef7f39bcb71ea1dd73843e33239f2181","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":24,"deletions":24}}},{"hash":"5ed2caa9114ff5901e781a5e894fd22fc9692f24","isMergeCommit":false,"messageTitle":"Add data folder","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"69b1ffe763eb16b659c15aa0a7391158ed327d83","isMergeCommit":true,"messageTitle":"Complete Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"facb7c7b0a5fd0bfcaa86d8ec3350d03b0dc5158","isMergeCommit":false,"messageTitle":"Fix ArrayIndexOutOfBoundsException","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":7,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Daphne789":{"java":374,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":11}},"authorContributionVariance":{"Daphne789":20129.69},"authorDisplayNameMap":{"Daphne789":"CS2103T-W09-1 DAPH..MINA"}} +{"authorDailyContributionsMap":{"Daphne789":[{"date":"2023-08-23","commitResults":[{"hash":"02362df3ee1bd96d425091d823cb48a39c26db89","isMergeCommit":false,"messageTitle":"Completed Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":10}}},{"hash":"029ef0a5e7db2e9286638e9457a0649a37a5b3b1","isMergeCommit":false,"messageTitle":"Completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":9}}},{"hash":"749104536ba6b267681330de4d2c7035605043e3","isMergeCommit":false,"messageTitle":"Completed Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":11}}}]},{"date":"2023-08-24","commitResults":[{"hash":"0269005894a469eb608b45cebf8be842afbfa495","isMergeCommit":false,"messageTitle":"Completed Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":5}}},{"hash":"6c3165a9542d74e17644e1089af56103d508a632","isMergeCommit":false,"messageTitle":"Completed Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":8}}},{"hash":"a30c7ee6837d5d8a0513db218ac2000d5b12997f","isMergeCommit":false,"messageTitle":"Completed Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1}}},{"hash":"1e8ba8a5b13e39de9e6fa356f3f5188b940f695a","isMergeCommit":false,"messageTitle":"Completed Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":7}}},{"hash":"d2a8ab6674f7741b14ac0125d623357cecf326e5","isMergeCommit":false,"messageTitle":"Completed Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":25}}}]},{"date":"2023-08-27","commitResults":[{"hash":"828ffdc231f95f3b94b5c6320a311d54266def58","isMergeCommit":false,"messageTitle":"Separate class into a new file","messageBody":"","tags":["release-1"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":0}}},{"hash":"f584933dac1798469569ce7a270a73e499f5ed58","isMergeCommit":false,"messageTitle":"Remove some classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":78}}},{"hash":"2cb64741aa0d6692d2caebd138d87a7617d52444","isMergeCommit":false,"messageTitle":"Add save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":129,"deletions":3}}},{"hash":"6cfcbb88915c09d0463d409d43f35ca181ac5ec8","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":55,"deletions":21}}},{"hash":"dda36dd2ef7f39bcb71ea1dd73843e33239f2181","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":24,"deletions":24}}},{"hash":"5ed2caa9114ff5901e781a5e894fd22fc9692f24","isMergeCommit":false,"messageTitle":"Add data folder","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}},{"hash":"69b1ffe763eb16b659c15aa0a7391158ed327d83","isMergeCommit":true,"messageTitle":"Complete Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"facb7c7b0a5fd0bfcaa86d8ec3350d03b0dc5158","isMergeCommit":false,"messageTitle":"Fix ArrayIndexOutOfBoundsException","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":7,"deletions":1}}}]},{"date":"2023-08-28","commitResults":[{"hash":"a1e83b04e479a2fb9407e585adcf0db1c8e67f93","isMergeCommit":false,"messageTitle":"Complete A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":309,"deletions":179}}}]}]},"authorFileTypeContributionMap":{"Daphne789":{"java":504,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":15}},"authorContributionVariance":{"Daphne789":32526.332},"authorDisplayNameMap":{"Daphne789":"CS2103T-W09-1 DAPH..MINA"}} diff --git a/Gavino3o_ip_master/authorship.json b/Gavino3o_ip_master/authorship.json index 6eaa7b7b..a7741032 100644 --- a/Gavino3o_ip_master/authorship.json +++ b/Gavino3o_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"# Bob project template","lastModifiedDate":"2023-08-27"},{"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":"Gavino3o"},"content":"3. After that, locate the `src/main/java/Bob.java` file, right-click it, and choose `Run Bob.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":{"Gavino3o":2,"-":22}},{"path":"src/main/java/Bob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"public class Bob {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" private static final String divider \u003d \"\\n____________________________________________________________\\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" private static final String logo \u003d","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" \".-. .-\u0027) .-. .-\u0027) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" \"\\\\ ( OO ) \\\\ ( OO ) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" \" ;-----.\\\\ .-\u0027),-----. ;-----.\\\\ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" \" | .-. | ( OO\u0027 .-. \u0027| .-. | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" \" | \u0027-\u0027 /_)/ | | | || \u0027-\u0027 /_) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" \" | .-. `. \\\\_) | |\\\\| || .-. `. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" \" | | \\\\ | \\\\ | | | || | \\\\ | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" \" | \u0027--\u0027 / `\u0027 \u0027-\u0027 \u0027| \u0027--\u0027 / \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" \" `------\u0027 `-----\u0027 `------\u0027 \";","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" private static final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" private static int pointer \u003d 0;","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" private static boolean isActive \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" public enum Commands {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" Bob.printWelcomeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" processResponse();","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" } catch (BobException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" System.out.println(e.getMessage() + divider);","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" private static void printWelcomeMessage() {","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" String welcomeMessage \u003d \"Hi, I\u0027m Bob. How can I help you?\";","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" System.out.println(divider + logo + \"\\n\" + welcomeMessage + divider);","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" private static void printGoodbyeMessage() {","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" String goodbyeMessage \u003d \"Goodbye! Bob signing out!\";","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" System.out.println(goodbyeMessage + divider);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" private static void printListMessage() {","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" if (pointer \u003d\u003d 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" System.out.println(String.format(\"\\nNow you have %d task in your list!\", pointer) + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":" System.out.println(String.format(\"\\nNow you have %d tasks in your list!\", pointer) + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" private static Commands parseCommand(String keyword) {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" return Commands.valueOf(keyword);","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" return Commands.INVALID;","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" private static void processResponse() throws BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Gavino3o"},"content":" String displayMessage \u003d \"I gotchu. New task added to the list:\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" String input \u003d Bob.scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" String[] inputSplit \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"Gavino3o"},"content":" String command \u003d inputSplit[0].toUpperCase();","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" String argument \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" if (inputSplit.length \u003e 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" argument \u003d inputSplit[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" switch (parseCommand(command)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" case BYE:","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" Bob.printGoodbyeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":" Bob.isActive \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" case LIST:","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"Gavino3o"},"content":" if (pointer \u003d\u003d 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You don\u0027t have any tasks. Good job!\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"Gavino3o"},"content":" for (int i \u003d 0; i \u003c pointer; i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to mark as done! Give me an integer number!\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" int markIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":" tasks.get(markIndex - 1).markAsDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Great Job! I\u0027ve helped mark this task as done:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"Gavino3o"},"content":" tasks.get(markIndex - 1).toString() + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The mark command must be followed by an integer number.\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to mark a non-existent task, ensure you mark a task that you have created :O\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":" case UNMARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to mark as done! Give me an integer number!\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" int unmarkIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" tasks.get(unmarkIndex - 1).unmarkTask();","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"No worries! I will help you unmark this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" tasks.get(unmarkIndex - 1).toString() + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The mark command must be followed by an integer number.\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to unmark a non-existent task, ensure you mark a task that you have created :O\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your todo should not be empty! Try:\\ntodo [description]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Todo(argument));","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(pointer).toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" Bob.pointer++;","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your deadline should not be empty! Try:\\ndeadline [description] /by [duedate]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":" String[] bySplit \u003d argument.split(\" /by \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" if (bySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect deadline command format! It should be:\\ndeadline [description] /by [duedate]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Deadline(bySplit[0], bySplit[1]));","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(pointer).toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"Gavino3o"},"content":" Bob.pointer++;","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"Gavino3o"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your event should not be empty! Try:\\nevent [description] /from [start] /to [end]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"Gavino3o"},"content":" String[] descSplit \u003d argument.split(\" /from \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"Gavino3o"},"content":" if (descSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect event command format! It should be:\\nevent [description] /from [start] /to [end]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"Gavino3o"},"content":" String[] periodSplit \u003d descSplit[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"Gavino3o"},"content":" if (periodSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect event command format! It should be:\\nevent [description] /from [start] /to [end]\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Event(descSplit[0], periodSplit[0], periodSplit[1]));","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(pointer).toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"Gavino3o"},"content":" Bob.pointer++;","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"Gavino3o"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to delete! Give me an integer number!\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"Gavino3o"},"content":" int delIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"Gavino3o"},"content":" Task deletedTask \u003d tasks.remove(delIndex - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Foosh! Let it be gone! I\u0027ve helped delete the task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"Gavino3o"},"content":" deletedTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"Gavino3o"},"content":" Bob.pointer--;","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The delete command must be followed by an integer number.\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to delete a non-existent task, ensure you delete a task that you have created :3\" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":179,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"Gavino3o"},"content":" case INVALID:","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"I\u0027m sorry! I don\u0027t understand the command :( \" + divider);","lastModifiedDate":"2023-08-22"},{"lineNumber":182,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":184,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"Gavino3o"},"content":" if (Bob.isActive) {","lastModifiedDate":"2023-08-27"},{"lineNumber":186,"author":{"gitId":"Gavino3o"},"content":" processResponse();","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":188,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"Gavino3o"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"Gavino3o"},"content":" throw new BobException(\"An unknown error has occurred. I\u0027ll shut myself off for now.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":193,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Gavino3o":193,"-":2}},{"path":"src/main/java/BobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"public class BobException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":" public BobException(String errorMessage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Gavino3o":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":" protected String by;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":" protected String startDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":" protected String endDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" Event(String description, String startDateTime, String endDateTime) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s, to: %s)\", startDateTime, endDateTime);","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":14}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":28}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":" Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"java -classpath ..\\bin Bob \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":{"Gavino3o":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":"Gavino3o"},"content":"java -classpath ../bin Bob \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":{"Gavino3o":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"# Bob project template","lastModifiedDate":"2023-08-27"},{"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":"Gavino3o"},"content":"3. After that, locate the `src/main/java/Bob.java` file, right-click it, and choose `Run Bob.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":{"Gavino3o":2,"-":22}},{"path":"src/main/java/Bob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"import exceptions.BobCorruptFileException;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"import exceptions.BobException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import task.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"public class Bob {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" private static final String divider \u003d \"\\n____________________________________________________________\\n\";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" private static final String logo \u003d","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" \".-. .-\u0027) .-. .-\u0027) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" \"\\\\ ( OO ) \\\\ ( OO ) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" \" ;-----.\\\\ .-\u0027),-----. ;-----.\\\\ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" \" | .-. | ( OO\u0027 .-. \u0027| .-. | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" \" | \u0027-\u0027 /_)/ | | | || \u0027-\u0027 /_) \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" \" | .-. `. \\\\_) | |\\\\| || .-. `. \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" \" | | \\\\ | \\\\ | | | || | \\\\ | \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" \" | \u0027--\u0027 / `\u0027 \u0027-\u0027 \u0027| \u0027--\u0027 / \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" \" `------\u0027 `-----\u0027 `------\u0027 \";","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" private static boolean isActive \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" private static String taskDirectoryRelativePath \u003d \"data/\";","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" private static String taskFileName \u003d \"Bob.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":" public enum Commands {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" Bob.printWelcomeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks \u003d loadTasks();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":" processResponse();","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":" } catch (BobException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":" System.out.println(e.getMessage() + divider);","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"Gavino3o"},"content":" private static void printWelcomeMessage() {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"Gavino3o"},"content":" String welcomeMessage \u003d \"Hi, I\u0027m Bob. How can I help you?\";","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"Gavino3o"},"content":" System.out.println(divider + logo + \"\\n\" + welcomeMessage + divider);","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"Gavino3o"},"content":" private static void printGoodbyeMessage() {","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"Gavino3o"},"content":" String goodbyeMessage \u003d \"Goodbye! Bob signing out!\";","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"Gavino3o"},"content":" System.out.println(goodbyeMessage);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"Gavino3o"},"content":" private static void printListMessage() {","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"Gavino3o"},"content":" if (tasks.size() \u003d\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"Gavino3o"},"content":" System.out.printf(\"\\nNow you have %d task in your list!%n\", tasks.size());","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"Gavino3o"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"Gavino3o"},"content":" System.out.printf(\"\\nNow you have %d tasks in your list!%n\", tasks.size());","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"Gavino3o"},"content":" private static Commands parseCommand(String keyword) {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Gavino3o"},"content":" return Commands.valueOf(keyword);","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"Gavino3o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"Gavino3o"},"content":" return Commands.INVALID;","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"Gavino3o"},"content":" // DateTime edit here","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Gavino3o"},"content":" private static Task parseStoredTask(String inputString) throws BobException {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Gavino3o"},"content":" String[] split \u003d inputString.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Gavino3o"},"content":" String commandType \u003d split[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Gavino3o"},"content":" switch (commandType) {","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Gavino3o"},"content":" case \"T\":","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Gavino3o"},"content":" return new Todo(split[2], Integer.parseInt(split[1]) \u003d\u003d 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Gavino3o"},"content":" case \"D\":","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Gavino3o"},"content":" return new Deadline(split[2], split[3], Integer.parseInt(split[1]) \u003d\u003d 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"Gavino3o"},"content":" case \"E\":","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Gavino3o"},"content":" return new Event(split[2], split[3], split[4], Integer.parseInt(split[1]) \u003d\u003d 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Gavino3o"},"content":" return null;","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"Gavino3o"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"Gavino3o"},"content":" throw new BobCorruptFileException(\"Your save file might be corrupted :(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"Gavino3o"},"content":" private static ArrayList\u003cTask\u003e loadTasks() throws BobException {","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"Gavino3o"},"content":" File dataDirectory \u003d new File(Bob.taskDirectoryRelativePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"Gavino3o"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Gavino3o"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Gavino3o"},"content":" File taskFile \u003d new File(Bob.taskDirectoryRelativePath + Bob.taskFileName);","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Gavino3o"},"content":" Scanner fileScanner \u003d new Scanner(taskFile);","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"Gavino3o"},"content":" ArrayList\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Gavino3o"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Gavino3o"},"content":" Task task \u003d parseStoredTask(fileScanner.nextLine());","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"Gavino3o"},"content":" loadedTasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"Gavino3o"},"content":" fileScanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Gavino3o"},"content":" return loadedTasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Gavino3o"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"Gavino3o"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"Gavino3o"},"content":" private static void saveTasks() throws BobException {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"Gavino3o"},"content":" File dataDirectory \u003d new File(Bob.taskDirectoryRelativePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"Gavino3o"},"content":" if (!dataDirectory.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"Gavino3o"},"content":" dataDirectory.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"Gavino3o"},"content":" FileWriter fileWriter \u003d new FileWriter(Bob.taskDirectoryRelativePath + Bob.taskFileName);","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"Gavino3o"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Gavino3o"},"content":" fileWriter.write(task.convertToFileFormat() + System.lineSeparator());","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"Gavino3o"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Gavino3o"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Gavino3o"},"content":" throw new BobException(\"Something went wrong when saving your tasks :(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":123,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"Gavino3o"},"content":" private static void processResponse() throws BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"Gavino3o"},"content":" String displayMessage \u003d \"I gotchu. New task added to the list:\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"Gavino3o"},"content":" String input \u003d Bob.scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"Gavino3o"},"content":" String[] inputSplit \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"Gavino3o"},"content":" String command \u003d inputSplit[0].toUpperCase();","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"Gavino3o"},"content":" String argument \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"Gavino3o"},"content":" if (inputSplit.length \u003e 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"Gavino3o"},"content":" argument \u003d inputSplit[1];","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"Gavino3o"},"content":" switch (parseCommand(command)) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"Gavino3o"},"content":" case BYE:","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"Gavino3o"},"content":" Bob.saveTasks();","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"Gavino3o"},"content":" Bob.printGoodbyeMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"Gavino3o"},"content":" scanner.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"Gavino3o"},"content":" Bob.isActive \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"Gavino3o"},"content":" case LIST:","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"Gavino3o"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You don\u0027t have any tasks. Good job!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"Gavino3o"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"Gavino3o"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i).toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":152,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"Gavino3o"},"content":" case MARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to mark as done! Give me an integer number!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"Gavino3o"},"content":" int markIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"Gavino3o"},"content":" tasks.get(markIndex - 1).markAsDone();","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Great Job! I\u0027ve helped mark this task as done:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"Gavino3o"},"content":" tasks.get(markIndex - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The mark command must be followed by an integer number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to mark a non-existent task, ensure you mark a task that you have created :O\");","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"Gavino3o"},"content":" case UNMARK:","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to mark as done! Give me an integer number!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"Gavino3o"},"content":" int unmarkIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"Gavino3o"},"content":" tasks.get(unmarkIndex - 1).unmarkTask();","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"No worries! I will help you unmark this task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"Gavino3o"},"content":" tasks.get(unmarkIndex - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The mark command must be followed by an integer number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":182,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to unmark a non-existent task, ensure you mark a task that you have created :O\");","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"Gavino3o"},"content":" case TODO:","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your todo should not be empty! Try:\\ntodo [description]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Todo(argument));","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Gavino3o"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your deadline should not be empty! Try:\\ndeadline [description] /by [duedate]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"Gavino3o"},"content":" String[] bySplit \u003d argument.split(\" /by \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"Gavino3o"},"content":" // DateTime edit here","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"Gavino3o"},"content":" if (bySplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect deadline command format! It should be:\\ndeadline [description] /by [duedate]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Deadline(bySplit[0], bySplit[1]));","lastModifiedDate":"2023-08-27"},{"lineNumber":207,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":208,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":210,"author":{"gitId":"Gavino3o"},"content":" case EVENT:","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The description of your event should not be empty! Try:\\nevent [description] /from [start] /to [end]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":213,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":216,"author":{"gitId":"Gavino3o"},"content":" // DateTime edit here","lastModifiedDate":"2023-08-28"},{"lineNumber":217,"author":{"gitId":"Gavino3o"},"content":" String[] descSplit \u003d argument.split(\" /from \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":218,"author":{"gitId":"Gavino3o"},"content":" if (descSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":219,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect event command format! It should be:\\nevent [description] /from [start] /to [end]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":220,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"Gavino3o"},"content":" String[] periodSplit \u003d descSplit[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"Gavino3o"},"content":" if (periodSplit.length !\u003d 2) {","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Incorrect event command format! It should be:\\nevent [description] /from [start] /to [end]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":225,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"Gavino3o"},"content":" Bob.tasks.add(new Event(descSplit[0], periodSplit[0], periodSplit[1]));","lastModifiedDate":"2023-08-27"},{"lineNumber":228,"author":{"gitId":"Gavino3o"},"content":" System.out.println(displayMessage + Bob.tasks.get(tasks.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":229,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":230,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"Gavino3o"},"content":" case DELETE:","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"Gavino3o"},"content":" if (argument.isBlank()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Tell me which task to delete! Give me an integer number!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":234,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":235,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":236,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":237,"author":{"gitId":"Gavino3o"},"content":" int delIndex \u003d Integer.parseInt(argument);","lastModifiedDate":"2023-08-22"},{"lineNumber":238,"author":{"gitId":"Gavino3o"},"content":" Task deletedTask \u003d tasks.remove(delIndex - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":239,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"Foosh! Let it be gone! I\u0027ve helped delete the task:\\n\" +","lastModifiedDate":"2023-08-22"},{"lineNumber":240,"author":{"gitId":"Gavino3o"},"content":" deletedTask.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":241,"author":{"gitId":"Gavino3o"},"content":" printListMessage();","lastModifiedDate":"2023-08-22"},{"lineNumber":242,"author":{"gitId":"Gavino3o"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":243,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"The delete command must be followed by an integer number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":244,"author":{"gitId":"Gavino3o"},"content":" } catch (NullPointerException | IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":245,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"You are trying to delete a non-existent task, ensure you delete a task that you have created :3\");","lastModifiedDate":"2023-08-28"},{"lineNumber":246,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":247,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":248,"author":{"gitId":"Gavino3o"},"content":" case INVALID:","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"Gavino3o"},"content":" System.out.println(\"I\u0027m sorry! I don\u0027t understand the command :(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":250,"author":{"gitId":"Gavino3o"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":251,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":252,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":253,"author":{"gitId":"Gavino3o"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-28"},{"lineNumber":254,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":255,"author":{"gitId":"Gavino3o"},"content":" if (Bob.isActive) {","lastModifiedDate":"2023-08-27"},{"lineNumber":256,"author":{"gitId":"Gavino3o"},"content":" processResponse();","lastModifiedDate":"2023-08-22"},{"lineNumber":257,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":258,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"Gavino3o"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"Gavino3o"},"content":" throw new BobException(\"An unknown error has occurred. I\u0027ll shut myself off for now.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":261,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":263,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":264,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Gavino3o":262,"-":2}},{"path":"src/main/java/exceptions/BobCorruptFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package exceptions;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"public class BobCorruptFileException extends BobException{","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" public BobCorruptFileException(String errorMessage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gavino3o":7}},{"path":"src/main/java/exceptions/BobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package exceptions;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"public class BobException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" public BobException(String errorMessage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" super(errorMessage);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Gavino3o":7}},{"path":"src/main/java/task/DateFormatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"public class DateFormatter {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" public static final String DEFAULT_FORMAT \u003d \"MMM d yyyy\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" public static String format(String inputString, String format) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" LocalDate date \u003d LocalDate.now();","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" date \u003d LocalDate.parse(inputString);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" return date.format(DateTimeFormatter.ofPattern(format));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" return inputString;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" return date.format(DateTimeFormatter.ofPattern(DateFormatter.DEFAULT_FORMAT));","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Gavino3o":21}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" protected String by;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" this.by \u003d DateFormatter.format(by, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" public Deadline(String description, String by, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" this.by \u003d DateFormatter.format(by, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" public String convertToFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"D|%s|%s\", super.convertToFileFormat(), this.by);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":26}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"import java.util.Date;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" protected String startDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" protected String endDateTime;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" public Event(String description, String startDateTime, String endDateTime) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" this.startDateTime \u003d DateFormatter.format(startDateTime, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" this.endDateTime \u003d DateFormatter.format(endDateTime, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" public Event(String description, String startDateTime, String endDateTime, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" this.startDateTime \u003d DateFormatter.format(startDateTime, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" this.endDateTime \u003d DateFormatter.format(endDateTime, \"MMM d yyyy\");","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"[E]%s (from: %s, to: %s)\", super.toString(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" public String convertToFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"E|%s|%s|%s\", super.convertToFileFormat(), this.startDateTime, this.endDateTime);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":29}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":" protected String description;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"Gavino3o"},"content":" return \"[\" + getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"Gavino3o"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"Gavino3o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"Gavino3o"},"content":" public String convertToFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"%s|%s\", this.isDone? 1 : 0, this.description);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":39}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"package task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Gavino3o"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Gavino3o"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"Gavino3o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Gavino3o"},"content":" public String convertToFileFormat() {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Gavino3o"},"content":" return String.format(\"T|%s\", super.convertToFileFormat());","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Gavino3o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Gavino3o"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Gavino3o"},"content":"todo borrow book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"Gavino3o"},"content":"deadline return book /by 2019-10-15","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Gavino3o"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"Gavino3o"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"Gavino3o"},"content":"mark 3","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Gavino3o"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Gavino3o"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Gavino3o"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Gavino3o"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"Gavino3o":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"Gavino3o"},"content":"java -classpath ..\\bin Bob \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":{"Gavino3o":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":"Gavino3o"},"content":"java -classpath ../bin Bob \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":{"Gavino3o":1,"-":37}}] diff --git a/Gavino3o_ip_master/commits.json b/Gavino3o_ip_master/commits.json index 19d29970..12f69d3c 100644 --- a/Gavino3o_ip_master/commits.json +++ b/Gavino3o_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Gavino3o":[{"date":"2023-08-21","commitResults":[{"hash":"db4cbe58de4bd1a12cffc98e729bb3c09468e070","isMergeCommit":false,"messageTitle":"Rename bot and modify greet and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"35e88321179c20fac8245d17852f0f51fd5f0792","isMergeCommit":false,"messageTitle":"Add echo functionality and refactor print messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}},{"hash":"0d39399fcbb7205af70c9c586c6f3e61e81f8709","isMergeCommit":false,"messageTitle":"Add task storing and list task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6e391e086577835c73613614f33700e8fbaf445c","isMergeCommit":false,"messageTitle":"Add Mark as Done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":14}}},{"hash":"256964946e95e3e08c62a4247bcdbe6751689c86","isMergeCommit":false,"messageTitle":"Add Todos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":18}}},{"hash":"cf789343ed88dc1de7d87d1c96ec757c420b4f5d","isMergeCommit":false,"messageTitle":"Implement initial testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":2,"deletions":1}}},{"hash":"4c9e18fb121a3a3a6b7d0e670f7a65114884c396","isMergeCommit":false,"messageTitle":"Add initial error handling for incorrect user inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":9}}},{"hash":"a2a1171bb12a8cffb7a45df026ed7efd7499ff94","isMergeCommit":false,"messageTitle":"Refactor response process to use ArrayList and recursion","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":98}}},{"hash":"d3f8fd1f28c616c91713c97d5b94b54b19020eb6","isMergeCommit":false,"messageTitle":"Add delete task functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"0b08b764200ee1abd9aa95c54db76393015a1a01","isMergeCommit":false,"messageTitle":"Refactor response processing to use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"3b061ee24991a412b6e4ab0c318ed2f0a7c316bb","isMergeCommit":false,"messageTitle":"Update automated test to include delete","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":4,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c6b8e568b3345e9b7fcb14e8d976421040f05649","isMergeCommit":false,"messageTitle":"Fix incorrect command exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":111}}}]},{"date":"2023-08-27","commitResults":[{"hash":"8eee1eb68d0786d278650a7e0d5e818c3defd32b","isMergeCommit":false,"messageTitle":"Rename files from Duke to Bob","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":28},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Gavino3o":{"java":265,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"Gavino3o":24571.492},"authorDisplayNameMap":{"Gavino3o":"CS2103T-W13-1 GAVI.. ZHE"}} +{"authorDailyContributionsMap":{"Gavino3o":[{"date":"2023-08-21","commitResults":[{"hash":"db4cbe58de4bd1a12cffc98e729bb3c09468e070","isMergeCommit":false,"messageTitle":"Rename bot and modify greet and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"35e88321179c20fac8245d17852f0f51fd5f0792","isMergeCommit":false,"messageTitle":"Add echo functionality and refactor print messages","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}},{"hash":"0d39399fcbb7205af70c9c586c6f3e61e81f8709","isMergeCommit":false,"messageTitle":"Add task storing and list task","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}}]},{"date":"2023-08-22","commitResults":[{"hash":"6e391e086577835c73613614f33700e8fbaf445c","isMergeCommit":false,"messageTitle":"Add Mark as Done functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":14}}},{"hash":"256964946e95e3e08c62a4247bcdbe6751689c86","isMergeCommit":false,"messageTitle":"Add Todos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":18}}},{"hash":"cf789343ed88dc1de7d87d1c96ec757c420b4f5d","isMergeCommit":false,"messageTitle":"Implement initial testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":2,"deletions":1}}},{"hash":"4c9e18fb121a3a3a6b7d0e670f7a65114884c396","isMergeCommit":false,"messageTitle":"Add initial error handling for incorrect user inputs","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":9}}},{"hash":"a2a1171bb12a8cffb7a45df026ed7efd7499ff94","isMergeCommit":false,"messageTitle":"Refactor response process to use ArrayList and recursion","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":98,"deletions":98}}},{"hash":"d3f8fd1f28c616c91713c97d5b94b54b19020eb6","isMergeCommit":false,"messageTitle":"Add delete task functionality","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":2}}},{"hash":"0b08b764200ee1abd9aa95c54db76393015a1a01","isMergeCommit":false,"messageTitle":"Refactor response processing to use enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"3b061ee24991a412b6e4ab0c318ed2f0a7c316bb","isMergeCommit":false,"messageTitle":"Update automated test to include delete","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":4,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"c6b8e568b3345e9b7fcb14e8d976421040f05649","isMergeCommit":false,"messageTitle":"Fix incorrect command exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":132,"deletions":111}}}]},{"date":"2023-08-27","commitResults":[{"hash":"8eee1eb68d0786d278650a7e0d5e818c3defd32b","isMergeCommit":false,"messageTitle":"Rename files from Duke to Bob","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":28},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"92ed998e5bae035f9a29122ad1e619f638d52995","isMergeCommit":false,"messageTitle":"Create packages and reallocate relevant files","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dc1f431c3c1dfc52db496b8b5202032794ff94ea","isMergeCommit":false,"messageTitle":"Add task saving functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":36}}},{"hash":"28443fc1b5e80145ee2f475e3e9b90ff029be96e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"eccd73929d2dd8a103a6aa401cd760bdeb3604be","isMergeCommit":false,"messageTitle":"Add Date recognition for Deadlines and Events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":12}}},{"hash":"96b2b69734de9c97da0d50b58d59680caa581ccf","isMergeCommit":false,"messageTitle":"Update input test to expect LocalDate format pattern","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"012d60708ea3f2b571474a4843cd0fc619ef1dca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Gavino3o":{"java":413,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":12}},"authorContributionVariance":{"Gavino3o":23856.068},"authorDisplayNameMap":{"Gavino3o":"CS2103T-W13-1 GAVI.. ZHE"}} diff --git a/Kailash201_ip_master/authorship.json b/Kailash201_ip_master/authorship.json index 7209efb0..529eb0c0 100644 --- a/Kailash201_ip_master/authorship.json +++ b/Kailash201_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" protected String by;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" public Deadline(String desc, String by) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public String getBy() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" private enum command {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" bye(\"bye\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" list(\"list\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" mark(\"mark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" unmark(\"unmark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" deadline(\"deadline\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" event(\"event\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" todo(\"todo\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" delete(\"delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" private final String command;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" command(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" return command;","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" public static void writeToFile(String filePath, String fileName, Task task) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName, true);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" StringBuilder custom \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" Todo td \u003d (Todo) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" custom.append(\"T\").append(div).append(td.getDesc()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" .append(td.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" Deadline dl \u003d (Deadline) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" custom.append(\"D\").append(div).append(dl.getDesc()).append(div).append(dl.getBy()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" .append(dl.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" Event eve \u003d (Event) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" custom.append(\"E\").append(div).append(eve.getDesc()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" .append(eve.getFrom()).append(div).append(eve.getTo()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" .append(eve.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" fW.write(custom.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":" // n starts from 0","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" public static void editFileAtLineN(String filePath, String fileName, int n, char newChar) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" if (i \u003d\u003d n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" StringBuilder sB \u003d new StringBuilder(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" sB.setCharAt(line.length() - 1, newChar);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" line \u003d sB.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":" public static void deleteTaskFromFile(String filePath, String fileName, int n) throws IOException{","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" if (i !\u003d n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":" public static ArrayList\u003cTask\u003e fileToObjects(String filePath, String fileName) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" FileWriter fw \u003d new FileWriter(filePath + \"/\" + fileName,true);","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Task(\"empty\");","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" String desc \u003d line.substring(div.length() + 1, line.lastIndexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" String by \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" task \u003d new Deadline(desc, by);","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" String from \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" int secLine \u003d sub.indexOf(div, firstLine) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" String to \u003d sub.substring(secLine, sub.indexOf(div, secLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" task \u003d new Event(desc, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" // check if task is completed","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(line.length() - 1) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" task.taskNotCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"Kailash201"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"Kailash201"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"Kailash201"},"content":" String filePath \u003d \"./data/\";","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"Kailash201"},"content":" String fileName \u003d \"trying.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"Kailash201"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"Kailash201"},"content":" String Start \u003d \"Hello! I\u0027m Red\\nWhat can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"Kailash201"},"content":" System.out.println(Start);","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d fileToObjects(filePath, fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"Kailash201"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"Kailash201"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":163,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.bye.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"Kailash201"},"content":" String End \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"Kailash201"},"content":" System.out.println(End);","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.list.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"Kailash201"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"Kailash201"},"content":" System.out.println(i + 1 + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.unmark.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"Kailash201"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":180,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"0 tasks in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":181,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.get(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"Kailash201"},"content":" selTask.taskNotCompleted();","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + selTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"Kailash201"},"content":" editFileAtLineN(filePath, fileName, selected, \u00270\u0027);","lastModifiedDate":"2023-08-27"},{"lineNumber":187,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.mark.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"Kailash201"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"0 tasks in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.get(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"Kailash201"},"content":" selTask.taskCompleted();","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + selTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"Kailash201"},"content":" editFileAtLineN(filePath, fileName, selected, \u00271\u0027);","lastModifiedDate":"2023-08-27"},{"lineNumber":199,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.deadline.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.deadline.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Wrong deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"D\");","lastModifiedDate":"2023-08-27"},{"lineNumber":214,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convert(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":215,"author":{"gitId":"Kailash201"},"content":" Task dl \u003d new Deadline(texts.get(0), texts.get(1));","lastModifiedDate":"2023-08-27"},{"lineNumber":216,"author":{"gitId":"Kailash201"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + dl +","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, dl);","lastModifiedDate":"2023-08-27"},{"lineNumber":220,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.event.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.event.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"to\") || !input.contains(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Wrong event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"E\");","lastModifiedDate":"2023-08-27"},{"lineNumber":234,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convert(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":235,"author":{"gitId":"Kailash201"},"content":" Task event \u003d new Event(texts.get(0), texts.get(1), texts.get(2));","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"Kailash201"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + event +","lastModifiedDate":"2023-08-23"},{"lineNumber":238,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, event);","lastModifiedDate":"2023-08-27"},{"lineNumber":240,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":241,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":243,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.todo.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.todo.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":249,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"T\");","lastModifiedDate":"2023-08-27"},{"lineNumber":251,"author":{"gitId":"Kailash201"},"content":" String desc \u003d parser.convert(input).get(0);","lastModifiedDate":"2023-08-27"},{"lineNumber":252,"author":{"gitId":"Kailash201"},"content":" if (desc.isEmpty() || desc.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"Kailash201"},"content":" Task todo \u003d new Todo(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"Kailash201"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + todo +","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":260,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.delete.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(input.indexOf(\"delete\") + 7)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":265,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.remove(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":266,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"Kailash201"},"content":" deleteTaskFromFile(filePath, fileName, selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":269,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":270,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":271,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"Kailash201"},"content":" if (e.getMessage().equals(\"Invalid command\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You have typed an invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":278,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Wrong event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Your event structure is wrong\");","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Wrong deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Your deadline structure is wrong\");","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":288,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":289,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":291,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":292,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":293,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kailash201":292,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class DukeException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" public DukeException(String errMes) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" super(errMes);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Kailash201":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" protected String from;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" protected String to;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" public Event(String desc, String from, String to) {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" public String getFrom() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public String getTo() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" \" + \"to: \" + to + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":24}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" private final String type;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" public Parser(String type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e convert(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" case \"E\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(6, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" texts.add((from));","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" texts.add(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" case \"D\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(9, input.indexOf(\"/by\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" texts.add(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" case \"T\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(input.indexOf(\"todo\") + 5);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" return texts;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Kailash201":40}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":" protected String desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public void taskCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public void taskNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" return isCompleted ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public String getDesc() {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" return desc;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" return \"[\" + getStatus() + \"]\" + \" \" + this.desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":30}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}}] +[{"path":"src/main/java/CustomDate.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"public class CustomDate {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime strToDateTime(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" Parser p \u003d new Parser();","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d p.splitter(text, \"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e yearNTime \u003d p.splitter(texts.get(2), \" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" String year \u003d addZeroFront(yearNTime.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" String mon \u003d addZeroFront(texts.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" String day \u003d addZeroFront(texts.get(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" String time \u003d formatTime(yearNTime.get(1));","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" LocalDateTime d1 \u003d LocalDateTime.parse(year + \"-\" + mon + \"-\" + day + \"T\" + time);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" return d1;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" public String addZeroFront(String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" return text.length() \u003d\u003d 1 ? 0 + text : text;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" public String formatTime(String str) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" return str.substring(0, 2) + \":\" + str.substring(2, 4);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Kailash201":28}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" public Deadline(String desc, LocalDateTime by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" return by;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"import java.util.Locale;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"import java.util.Objects;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" private enum command {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" bye(\"bye\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" list(\"list\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" mark(\"mark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" unmark(\"unmark\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" deadline(\"deadline\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" event(\"event\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" todo(\"todo\"),","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" delete(\"delete\");","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" private final String command;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" command(String command) {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" this.command \u003d command;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" return command;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" public static void writeToFile(String filePath, String fileName, Task task) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName, true);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" StringBuilder custom \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" Todo td \u003d (Todo) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" custom.append(\"T\").append(div).append(td.getDesc()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" .append(td.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" Deadline dl \u003d (Deadline) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" custom.append(\"D\").append(div).append(dl.getDesc()).append(div).append(dl.getBy()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" .append(dl.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" Event eve \u003d (Event) task;","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" custom.append(\"E\").append(div).append(eve.getDesc()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" .append(eve.getFrom()).append(div).append(eve.getTo()).append(div)","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" .append(eve.getStatus().equals(\"X\") ? 1 : 0)","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" .append(System.lineSeparator());;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" fW.write(custom.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Kailash201"},"content":" // n starts from 0","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Kailash201"},"content":" public static void editFileAtLineN(String filePath, String fileName, int n, char newChar) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"Kailash201"},"content":" if (i \u003d\u003d n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"Kailash201"},"content":" StringBuilder sB \u003d new StringBuilder(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"Kailash201"},"content":" sB.setCharAt(line.length() - 1, newChar);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"Kailash201"},"content":" line \u003d sB.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Kailash201"},"content":" public static void deleteTaskFromFile(String filePath, String fileName, int n) throws IOException{","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"Kailash201"},"content":" new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Kailash201"},"content":" StringBuilder oldContent \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Kailash201"},"content":" int i \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"Kailash201"},"content":" if (i !\u003d n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"Kailash201"},"content":" oldContent.append(line).append(System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"Kailash201"},"content":" i++;","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"Kailash201"},"content":" FileWriter fW \u003d new FileWriter(filePath + \"/\" + fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"Kailash201"},"content":" fW.write(oldContent.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"Kailash201"},"content":" fW.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"Kailash201"},"content":" public static ArrayList\u003cTask\u003e fileToObjects(String filePath, String fileName) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"Kailash201"},"content":" File directory \u003d new File(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Kailash201"},"content":" if (!directory.exists() ) {","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"Kailash201"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"Kailash201"},"content":" FileWriter fw \u003d new FileWriter(filePath + \"/\" + fileName,true);","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"Kailash201"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath + \"/\" + fileName));","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"Kailash201"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"Kailash201"},"content":" String div \u003d \"*|,\";","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"Kailash201"},"content":" Task task \u003d new Task(\"empty\");","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"Kailash201"},"content":" while (line !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"Kailash201"},"content":" String desc \u003d line.substring(div.length() + 1, line.lastIndexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"Kailash201"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"Kailash201"},"content":" String by \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"Kailash201"},"content":" task \u003d new Deadline(desc, LocalDateTime.parse(by));","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"Kailash201"},"content":" } else if (line.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"Kailash201"},"content":" String sub \u003d line.substring(div.length() + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"Kailash201"},"content":" String desc \u003d sub.substring(0, sub.indexOf(div));","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"Kailash201"},"content":" int firstLine \u003d sub.indexOf(div) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"Kailash201"},"content":" String from \u003d sub.substring(firstLine, sub.indexOf(div, firstLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"Kailash201"},"content":" int secLine \u003d sub.indexOf(div, firstLine) + div.length();","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"Kailash201"},"content":" String to \u003d sub.substring(secLine, sub.indexOf(div, secLine));","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"Kailash201"},"content":" task \u003d new Event(desc, LocalDateTime.parse(from), LocalDateTime.parse(to));","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"Kailash201"},"content":" // check if task is completed","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"Kailash201"},"content":" if (line.charAt(line.length() - 1) \u003d\u003d \u00271\u0027) {","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"Kailash201"},"content":" task.taskCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"Kailash201"},"content":" task.taskNotCompleted();","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"Kailash201"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"Kailash201"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"Kailash201"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"Kailash201"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"Kailash201"},"content":" String filePath \u003d \"./data/\";","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"Kailash201"},"content":" String fileName \u003d \"trying.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"Kailash201"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"Kailash201"},"content":" String Start \u003d \"Hello! I\u0027m Red\\nWhat can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"Kailash201"},"content":" System.out.println(Start);","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cTask\u003e tasks \u003d fileToObjects(filePath, fileName);","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"Kailash201"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"Kailash201"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"Kailash201"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.bye.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"Kailash201"},"content":" String End \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"Kailash201"},"content":" System.out.println(End);","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.list.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":172,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"Kailash201"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"Kailash201"},"content":" System.out.println(i + 1 + \".\" + tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.unmark.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"Kailash201"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":181,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"0 tasks in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.get(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":185,"author":{"gitId":"Kailash201"},"content":" selTask.taskNotCompleted();","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" + selTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"Kailash201"},"content":" editFileAtLineN(filePath, fileName, selected, \u00270\u0027);","lastModifiedDate":"2023-08-27"},{"lineNumber":188,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.mark.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"Kailash201"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"0 tasks in the list\");","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"Kailash201"},"content":" Task selTask \u003d tasks.get(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"Kailash201"},"content":" selTask.taskCompleted();","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" + selTask);","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"Kailash201"},"content":" editFileAtLineN(filePath, fileName, selected, \u00271\u0027);","lastModifiedDate":"2023-08-27"},{"lineNumber":200,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.deadline.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.deadline.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(8) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Wrong deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"D\");","lastModifiedDate":"2023-08-27"},{"lineNumber":215,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convert(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":216,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-28"},{"lineNumber":217,"author":{"gitId":"Kailash201"},"content":" Task dl \u003d new Deadline(texts.get(0), cD.strToDateTime(texts.get(1)));","lastModifiedDate":"2023-08-28"},{"lineNumber":218,"author":{"gitId":"Kailash201"},"content":" tasks.add(dl);","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":220,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + dl +","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":223,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, dl);","lastModifiedDate":"2023-08-27"},{"lineNumber":224,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.event.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.event.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":230,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":231,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(5) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":233,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"Kailash201"},"content":" if (!input.contains(\"to\") || !input.contains(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Wrong event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"E\");","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d parser.convert(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":239,"author":{"gitId":"Kailash201"},"content":" CustomDate cD \u003d new CustomDate();","lastModifiedDate":"2023-08-28"},{"lineNumber":240,"author":{"gitId":"Kailash201"},"content":" Task event \u003d new Event(texts.get(0),","lastModifiedDate":"2023-08-28"},{"lineNumber":241,"author":{"gitId":"Kailash201"},"content":" cD.strToDateTime(texts.get(1)), cD.strToDateTime(texts.get(2)));","lastModifiedDate":"2023-08-28"},{"lineNumber":242,"author":{"gitId":"Kailash201"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-24"},{"lineNumber":243,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":244,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + event +","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, event);","lastModifiedDate":"2023-08-27"},{"lineNumber":247,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":249,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.todo.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"Kailash201"},"content":" if (input.equals(command.todo.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":254,"author":{"gitId":"Kailash201"},"content":" if (input.charAt(4) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"Kailash201"},"content":" Parser parser \u003d new Parser(\"T\");","lastModifiedDate":"2023-08-27"},{"lineNumber":258,"author":{"gitId":"Kailash201"},"content":" String desc \u003d parser.convert(input).get(0);","lastModifiedDate":"2023-08-27"},{"lineNumber":259,"author":{"gitId":"Kailash201"},"content":" if (desc.isEmpty() || desc.isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"Kailash201"},"content":" Task todo \u003d new Todo(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":263,"author":{"gitId":"Kailash201"},"content":" tasks.add(todo);","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" + todo +","lastModifiedDate":"2023-08-23"},{"lineNumber":265,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"Kailash201"},"content":" writeToFile(filePath, fileName, todo);","lastModifiedDate":"2023-08-27"},{"lineNumber":267,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":268,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"Kailash201"},"content":" if (input.contains(command.delete.toString())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":271,"author":{"gitId":"Kailash201"},"content":" int selected \u003d Integer.parseInt(input.substring(input.indexOf(\"delete\") + 7)) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":272,"author":{"gitId":"Kailash201"},"content":" Task task \u003d tasks.remove(selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":273,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" + task +","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"Kailash201"},"content":" \"\\nNow you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"Kailash201"},"content":" deleteTaskFromFile(filePath, fileName, selected);","lastModifiedDate":"2023-08-27"},{"lineNumber":276,"author":{"gitId":"Kailash201"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":278,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"Kailash201"},"content":" throw new DukeException(\"Invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":281,"author":{"gitId":"Kailash201"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"Kailash201"},"content":" if (e.getMessage().equals(\"Invalid command\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You have typed an invalid command\");","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty todo\");","lastModifiedDate":"2023-08-24"},{"lineNumber":286,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":287,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":288,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Empty event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":289,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"You cannot have an empty event\");","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Wrong event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Your event structure is wrong, it is \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":292,"author":{"gitId":"Kailash201"},"content":" \"event \u003cyour task\u003e /from dd/mm/yyyy hhmm /to dd/mm/yyyy hhmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":293,"author":{"gitId":"Kailash201"},"content":" } else if (e.getMessage().equals(\"Wrong deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":294,"author":{"gitId":"Kailash201"},"content":" System.out.println(\"Your deadline structure is wrong, it is\" +","lastModifiedDate":"2023-08-28"},{"lineNumber":295,"author":{"gitId":"Kailash201"},"content":" \" deadline \u003cyour task\u003e /by dd/mm/yyyy hhmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":296,"author":{"gitId":"Kailash201"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":297,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":298,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":299,"author":{"gitId":"Kailash201"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":300,"author":{"gitId":"Kailash201"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":301,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":302,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Kailash201":301,"-":3}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class DukeException extends RuntimeException{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" public DukeException(String errMes) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" super(errMes);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"Kailash201":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public Event(String desc, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" return from;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" return to;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" return \"[E]\" + super.toString() + \" (from: \"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \" \"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" + \"- \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm\")) + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":30}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" private String type \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" public Parser(){","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" public Parser(String type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" this.type \u003d type;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e convert(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e texts \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" case \"E\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(6, input.indexOf(\"/from\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":" String from \u003d input.substring(input.indexOf(\"/from\") + 6, input.indexOf(\"/to\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" texts.add((from));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" String to \u003d input.substring(input.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" texts.add(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" case \"D\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(9, input.indexOf(\"/by\") - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":" String by \u003d input.substring(input.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Kailash201"},"content":" texts.add(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"Kailash201"},"content":" case \"T\": {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Kailash201"},"content":" String desc \u003d input.substring(input.indexOf(\"todo\") + 5);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"Kailash201"},"content":" texts.add(desc);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"Kailash201"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"Kailash201"},"content":" return texts;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"Kailash201"},"content":" public ArrayList\u003cString\u003e splitter(String text, String cutOff) {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"Kailash201"},"content":" ArrayList\u003cString\u003e res \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"Kailash201"},"content":" String resStrAftCutting \u003d text;","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"Kailash201"},"content":" while (resStrAftCutting.contains(cutOff)) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"Kailash201"},"content":" String sub \u003d resStrAftCutting.substring(0, resStrAftCutting.indexOf(cutOff));","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"Kailash201"},"content":" res.add(sub);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"Kailash201"},"content":" resStrAftCutting \u003d resStrAftCutting.substring(resStrAftCutting.indexOf(cutOff) + 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Kailash201"},"content":" res.add(resStrAftCutting);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"Kailash201"},"content":" return res;","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"Kailash201":53}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":" protected String desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" protected boolean isCompleted;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":" this.desc \u003d desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" public void taskCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"Kailash201"},"content":" public void taskNotCompleted() {","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"Kailash201"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"Kailash201"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"Kailash201"},"content":" return isCompleted ? \"X\" : \" \";","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"Kailash201"},"content":" public String getDesc() {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"Kailash201"},"content":" return desc;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"Kailash201"},"content":" return \"[\" + getStatus() + \"]\" + \" \" + this.desc;","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":30}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":" @Override","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":" public String toString() {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kailash201"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"Kailash201"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"Kailash201"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"Kailash201"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"Kailash201"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"Kailash201"},"content":"unmark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"Kailash201"},"content":"delete 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"Kailash201"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"Kailash201"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"Kailash201":11}}] diff --git a/Kailash201_ip_master/commits.json b/Kailash201_ip_master/commits.json index addffce7..f5c92f9f 100644 --- a/Kailash201_ip_master/commits.json +++ b/Kailash201_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kailash201":[{"date":"2023-08-23","commitResults":[{"hash":"7b424ebbc5d8d1ec2a3de3c8e8b7bd4676ec34ad","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"1c76f23245e4597c2e3b0977527a326b7b53d540","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"901b651448a5e83dd0f81db04cdbb954d305b2b5","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"7b57d8603f9c8924dfed773f91c63ffac36ac74e","isMergeCommit":false,"messageTitle":"Duke.java, Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"3bf37c767e2f9bca8bbb7fc7e00808fc5d7cb900","isMergeCommit":false,"messageTitle":"add new classes and edit duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"95851a4f85b5afe4e8b7386dcb85200c35713f2e","isMergeCommit":false,"messageTitle":"test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e143220a66f516361bf809f60e89d83fb2fe65be","isMergeCommit":false,"messageTitle":"add dukception","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":65}}},{"hash":"0969c7865e52d8d45f106021721dc8e39f31bb6a","isMergeCommit":false,"messageTitle":"lvl6 and added delete to testcases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":15}}},{"hash":"08fd2b79afb0c575a9ed8f94a4d39926751db7ed","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":11}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a8f588f9f6e5bedbc646124624961eba3f7b2b3b","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":18}}}]},{"date":"2023-08-28","commitResults":[{"hash":"ef671b07e53b4886cba3b4b68e4f274faca41913","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kailash201":{"java":421,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"Kailash201":10490.561},"authorDisplayNameMap":{"Kailash201":"CS2103T-T10-3 KAIL..LVAM"}} +{"authorDailyContributionsMap":{"Kailash201":[{"date":"2023-08-23","commitResults":[{"hash":"7b424ebbc5d8d1ec2a3de3c8e8b7bd4676ec34ad","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":6}}},{"hash":"1c76f23245e4597c2e3b0977527a326b7b53d540","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"901b651448a5e83dd0f81db04cdbb954d305b2b5","isMergeCommit":false,"messageTitle":"Duke.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":4}}},{"hash":"7b57d8603f9c8924dfed773f91c63ffac36ac74e","isMergeCommit":false,"messageTitle":"Duke.java, Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"3bf37c767e2f9bca8bbb7fc7e00808fc5d7cb900","isMergeCommit":false,"messageTitle":"add new classes and edit duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":5}}},{"hash":"95851a4f85b5afe4e8b7386dcb85200c35713f2e","isMergeCommit":false,"messageTitle":"test files","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-24","commitResults":[{"hash":"e143220a66f516361bf809f60e89d83fb2fe65be","isMergeCommit":false,"messageTitle":"add dukception","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":65}}},{"hash":"0969c7865e52d8d45f106021721dc8e39f31bb6a","isMergeCommit":false,"messageTitle":"lvl6 and added delete to testcases","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":15}}},{"hash":"08fd2b79afb0c575a9ed8f94a4d39926751db7ed","isMergeCommit":false,"messageTitle":"added enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":11}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a8f588f9f6e5bedbc646124624961eba3f7b2b3b","isMergeCommit":false,"messageTitle":"Add save function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":18}}}]},{"date":"2023-08-28","commitResults":[{"hash":"ef671b07e53b4886cba3b4b68e4f274faca41913","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"a7833704056593486224a90ce93e83fbff392383","isMergeCommit":false,"messageTitle":"Add date-time function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":19}}},{"hash":"6c8e4c5af00bd8ac359addc990434b49afe78b80","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kailash201":{"java":481,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"Kailash201":10174.694},"authorDisplayNameMap":{"Kailash201":"CS2103T-T10-3 KAIL..LVAM"}} diff --git a/LoMaply_ip_master/authorship.json b/LoMaply_ip_master/authorship.json index a190c5f6..5247e2d0 100644 --- a/LoMaply_ip_master/authorship.json +++ b/LoMaply_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/TaskData.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"E | X | lol | 2020-07-05 | 2024-07-06","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"E | | lol | 2001-07-07 | 2001-07-07","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"E | | wowzers | 2001-06-07 | 2001-09-08","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"LoMaply":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime limit;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" private Deadline(String title, LocalDateTime limit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" this.limit \u003d limit;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" * Adds a new Deadline task to the list of tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" * @param title Title of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" * @param limit Deadline of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" * @return Task object created.","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" public static Task addDeadline(String title, LocalDateTime limit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" Task deadline \u003d new Deadline(title, limit);","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" taskList.add(deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" return deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" String time \u003d String.format(\" (by: %s)\", limit.format(displayFormat));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" return \"[D]\" + super.toString() + time;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" * Convert Deadline task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" return \"D\" + super.toFileString() + \" | \" + limit.format(dataFormat);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":38}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" * Formats chatbot output with borders, first line indentation and new line character at the end.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" * @param message Formatted message to be displayed to user.","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" public static void output(String message) {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" String line \u003d \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" String template \u003d line + \" %s\\n\" + line;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" System.out.printf((template) + \"%n\", message);","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" * Formats chatbot output specifically for adding/removing tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" * @param task Task added to list.","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" public static void taskOutput(Task task, String action) {","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" String taskMessage \u003d \"I\u0027ve %s the following task as requested:\\n %s\\n \"","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" + \"There are currently %d tasks in your list.\";","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" Duke.output(String.format(taskMessage, action, task.toString(), Task.taskList.size()));","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" * Parses Date string input for Deadline/Event creation.","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" * @param dateString A string in the form [day.month.year 24hrTime].","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" * @return LocalDate object.","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" * @throws DateTimeParseException To be handled in parseUserInput().","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" private static LocalDateTime parseDate(String dateString) throws DateTimeParseException {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd.MM.yyyy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" return LocalDateTime.parse(dateString, formatter);","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" * Initialises chatbot by loading data from file, queries user for decision when file cannot be read.","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" public static void initialise() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" if (!Storage.loadData()) { // Error with loading data file, prompts for user input for next step","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" boolean isUnresolved \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" while (isUnresolved) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":" String input \u003d userInput.nextLine().toUpperCase();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" switch (input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" case \"Y\":","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" parseUserInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" isUnresolved \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":" case \"N\":","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" isUnresolved \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Exiting program... Restore or delete the data file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Please reply with Y/N only\");","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" userInput.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" } else { // No error with reading data","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":" parseUserInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":" * Parses and acts on user input for chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" private static void parseUserInput() {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" boolean isRun \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Hey its Jyuuni, your helpful assistant.\\n How can I help you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"LoMaply"},"content":" // Requests user input until program is instructed to end.","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"LoMaply"},"content":" while (isRun) {","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"LoMaply"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"LoMaply"},"content":" String[] splitInput \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":80,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"LoMaply"},"content":" switch (splitInput[0]) {","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"LoMaply"},"content":" case \"mark\":","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":84,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"LoMaply"},"content":" Task.changeStatusIndex(index, true);","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"mark\" is not a number.","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"You need to provide a valid number\");","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"LoMaply"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"LoMaply"},"content":" Task.changeStatusIndex(index, false);","lastModifiedDate":"2023-08-26"},{"lineNumber":94,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"unmark\" is not a number.","lastModifiedDate":"2023-08-26"},{"lineNumber":95,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"You need to provide a valid number\");","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"LoMaply"},"content":" case \"delete\":","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"LoMaply"},"content":" Task.deleteTask(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":102,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"delete\" is not a number.","lastModifiedDate":"2023-08-26"},{"lineNumber":103,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"You need to provide a valid number:\\n\" + \" eg. delete 1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":106,"author":{"gitId":"LoMaply"},"content":" case \"todo\":","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"LoMaply"},"content":" if (splitInput.length !\u003d 2) { // Checks for description before creating task.","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"LoMaply"},"content":" + \" todo [DESCRIPTION]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"LoMaply"},"content":" } else {","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"LoMaply"},"content":" Task todo \u003d Todo.addTodo(splitInput[1]);","lastModifiedDate":"2023-08-26"},{"lineNumber":112,"author":{"gitId":"LoMaply"},"content":" Duke.taskOutput(todo, \"added\");","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"LoMaply"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-21"},{"lineNumber":116,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"LoMaply"},"content":" String[] deadVar \u003d splitInput[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"LoMaply"},"content":" Task deadline \u003d Deadline.addDeadline(deadVar[0], Duke.parseDate(deadVar[1]));","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"LoMaply"},"content":" Duke.taskOutput(deadline, \"added\");","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // String not split due to improper format","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"LoMaply"},"content":" + \" deadline [DESCRIPTION] /by [dd.mm.yyyy]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"LoMaply"},"content":" } catch (DateTimeParseException e) { // Date not formatted properly","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Try the date format [dd.mm.yyyy tttt]:\"","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"LoMaply"},"content":" + \"\\n eg. [05.08.2020 1500] for 5 Aug 2020, 3PM\");","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"LoMaply"},"content":" case \"event\":","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"LoMaply"},"content":" // Using 1 split statement that splits by /(from|to) allows wrong combos like \"/to x /from x\".","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"LoMaply"},"content":" String[] eventVar \u003d splitInput[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":132,"author":{"gitId":"LoMaply"},"content":" String[] times \u003d eventVar[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-21"},{"lineNumber":133,"author":{"gitId":"LoMaply"},"content":" LocalDateTime start \u003d parseDate(times[0]);","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"LoMaply"},"content":" LocalDateTime end \u003d parseDate(times[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"LoMaply"},"content":" if (start.isAfter(end)) { // Checks that event start \u003c\u003d end","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"An event cannot end before it starts... might wanna check your dates\");","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"LoMaply"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"LoMaply"},"content":" Task event \u003d Event.addEvent(eventVar[0], start, end);","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"LoMaply"},"content":" Duke.taskOutput(event, \"added\");","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // String not split due to improper format","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"LoMaply"},"content":" + \" event [DESCRIPTION] /from [dd.mm.yyyy] /to [dd.mm.yyyy]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"LoMaply"},"content":" } catch (DateTimeParseException e) { // Date not formatted properly","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Try the date format [dd.mm.yyyy tttt]:\"","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"LoMaply"},"content":" + \"\\n eg. [05.08.2020 1500] for 5 Aug 2020, 3PM\");","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":148,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-21"},{"lineNumber":149,"author":{"gitId":"LoMaply"},"content":" case \"list\":","lastModifiedDate":"2023-08-20"},{"lineNumber":150,"author":{"gitId":"LoMaply"},"content":" Duke.output(Task.listToString());","lastModifiedDate":"2023-08-26"},{"lineNumber":151,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"LoMaply"},"content":" case \"end\":","lastModifiedDate":"2023-08-20"},{"lineNumber":153,"author":{"gitId":"LoMaply"},"content":" isRun \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":154,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Come back if you need anything else!\");","lastModifiedDate":"2023-08-20"},{"lineNumber":155,"author":{"gitId":"LoMaply"},"content":" userInput.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":156,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":157,"author":{"gitId":"LoMaply"},"content":" default:","lastModifiedDate":"2023-08-20"},{"lineNumber":158,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Sorry, I don\u0027t recognise this comment :(\");","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":160,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":161,"author":{"gitId":"LoMaply"},"content":" Storage.writeToFile(Task.taskList);","lastModifiedDate":"2023-08-26"},{"lineNumber":162,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":164,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"LoMaply"},"content":" Duke.initialise();","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":5,"LoMaply":163}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" private Event(String title, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" * Adds a new Event task to the list of tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" * @param title Title of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" * @param start Start time of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" * @param end End time of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" * @return Task object created.","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" public static Task addEvent(String title, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" Task event \u003d new Event(title, start, end);","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" taskList.add(event);","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" return event;","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" String from \u003d start.format(displayFormat);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" String to \u003d end.format(displayFormat);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" String time \u003d String.format(\" (from: %s to: %s)\", from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" return \"[E]\" + super.toString() + time;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" * Convert Event task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" return \"E\" + super.toFileString() + String.format(\" | %s | %s\", start.format(dataFormat), end.format(dataFormat));","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":43}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"import java.io.File;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":"public class Storage {","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" public static final String FILE_DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" public static final String FILE_NAME \u003d \"TaskData.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" public static final String FILE_LOCATION \u003d FILE_DIRECTORY + \"/\" + FILE_NAME;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" * Creates directory and txt file for storing task data if they do not exist, else does nothing.","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" private static void openFile() {","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" File directory \u003d new File(FILE_DIRECTORY);","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" File dataFile \u003d new File(FILE_LOCATION);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" dataFile.createNewFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" * Write data from ArrayList of tasks to a file.","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" * @param taskList An ArrayList of tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" public static void writeToFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" FileWriter file \u003d new FileWriter(FILE_LOCATION);","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" StringBuilder fileData \u003d new StringBuilder();","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" String taskString \u003d task.toFileString() + \"\\n\";","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" fileData.append(taskString);","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" file.write(fileData.toString());","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" file.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" * Loads task data from txt file to chatbot.","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" public static boolean loadData() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" Storage.openFile();","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" File dataFile \u003d new File(FILE_LOCATION);","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" Scanner reader \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" // Add error checking for wrong data format (probably as long as split works shld be fine)","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" // Maybe add command to just delete data file and create new one if can\u0027t read","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" String data \u003d reader.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" String[] splitInput \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" boolean isDone \u003d splitInput[1].equals(\"X\");","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":" // Data is in format [type, isDone, title, from/by, to], from/by/to are only present depending on type.","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" switch(splitInput[0]) {","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":" Todo.addTodo(splitInput[2]).changeStatus(isDone);","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" Deadline.addDeadline(splitInput[2], LocalDateTime.parse(splitInput[3], Task.dataFormat)).changeStatus(isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":" Event.addEvent(splitInput[2], LocalDateTime.parse(splitInput[3], Task.dataFormat), LocalDateTime.parse(splitInput[4], Task.dataFormat))","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"LoMaply"},"content":" .changeStatus(isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"LoMaply"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // File formatted with wrong no. of \" | \" dividers for task types.","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"There seems to be a problem with reading in data from:\\n [\" + FILE_LOCATION","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"LoMaply"},"content":" + \"]\\n\\n Proceeding will overwrite the current data file [Y/N]:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"LoMaply"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"LoMaply"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"LoMaply":87}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" protected static final DateTimeFormatter displayFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, hh:mm a\");","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" protected static final DateTimeFormatter dataFormat \u003d DateTimeFormatter.ofPattern(\"dd.MM.yyyy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" protected static final ArrayList\u003cTask\u003e taskList\u003d new ArrayList\u003c\u003e(1);","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" protected String title;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" public Task(String title) {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" this.title \u003d title;","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" * Get completed status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" * @return X if task is completed, a blank space otherwise.","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" * Modify status of current task.","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" * @param isCompleted New status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" public void changeStatus(boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" this.isDone \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" * Modify status of task based on index.","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" * @param index ArrayList index of task to be modified.","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" * @param isCompleted New status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" public static void changeStatusIndex(int index, boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" Task pendingTask \u003d taskList.get(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" pendingTask.isDone \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"Task updated as requested:\\n \" + pendingTask);","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" } catch (IndexOutOfBoundsException e) { // When index falls outside ArrayList.","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"I can\u0027t modify a task that doesn\u0027t exist...\\n Try a number from the list\");","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" * Delete task from taskList.","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" * @param index ArrayList index of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" Task delete \u003d taskList.remove(index);","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" Duke.taskOutput(delete, \"removed\");","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" } catch (IndexOutOfBoundsException e) { // When index falls outside ArrayList.","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" Duke.output(\"I can\u0027t remove a task that doesn\u0027t exist...\\n Try a number from the list\");","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" * Converts a task to a formatted string.","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" * @return Status and title of task in string.","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":" return String.format(\"[%s] %s\", this.getStatus(), title);","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" * Converts ArrayList of tasks to a string as a numbered list for chatbot output.","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" * @return List of all tasks, formatted as numbered list.","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"LoMaply"},"content":" public static String listToString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"LoMaply"},"content":" StringBuilder allTasks \u003d new StringBuilder(\"Here are your tasks:\");","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"LoMaply"},"content":" int taskNo \u003d taskList.size();","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"LoMaply"},"content":" for (int i \u003d 0; i \u003c taskNo; i++) {","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"LoMaply"},"content":" allTasks.append(String.format(\"\\n %d.%s\", (i + 1), taskList.get(i).toString()));","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"LoMaply"},"content":" return allTasks.toString();","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"LoMaply"},"content":" * Returns a base string to be used for storing in data file.","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string, to be further modified by overriding methods in child classes.","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"LoMaply"},"content":" return String.format(\" | %s | %s\", this.getStatus(), title);","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"LoMaply":90}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":" private Todo(String title) {","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" * Adds a new To-do task to the list of tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" * @param title Title of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" * @return Task object created.","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" public static Task addTodo(String title) {","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" Task todo \u003d new Todo(title);","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" taskList.add(todo);","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" return todo;","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" * Convert To-do task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for To-do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":31}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"todo buy 2 groceries","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"deadline eat lunch /by 1st june mon","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"deadline eat lunch /by 01.06.2024 1500","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"event holiday /to july","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"event japan holiday trip /from 08.07.2023 0000 /to 07.07.2023 1930","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":"event japan holiday trip /from 06.07.2023 0000 /to 07.07.2023 1930","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":"deadline stuff /by 01 June 25 4am","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":"hello","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":"unmark three","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":"delete task 1","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":"delete 3","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":"end","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":24}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime limit;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" public Deadline(String title, LocalDateTime limit) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" this.limit \u003d limit;","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" String time \u003d String.format(\" (by: %s)\", limit.format(displayFormat));","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" return \"[D]\" + super.toString() + time;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" * Convert Deadline task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" return \"D\" + super.toFileString() + \" | \" + Parser.dateFormat(limit);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":26}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" private final Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" private final TaskList taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" public Duke(String fileDirectory) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" storage \u003d new Storage(fileDirectory);","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" new Duke(\"./data\").initialise();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" * Initialises chatbot by loading data from file, queries user for decision when file cannot be read.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" public void initialise() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" if (!storage.loadData(taskList)) { // Error with loading data file, prompts for user input for next step","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" boolean isUnresolved \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" while (isUnresolved) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" String input \u003d userInput.nextLine().toUpperCase();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" switch (input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" case \"Y\":","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" this.runJyuuni();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" isUnresolved \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" case \"N\":","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" isUnresolved \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Exiting program... Restore or delete the data file\");","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Please reply with Y/N only\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" userInput.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" } else { // No error with reading data","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" this.runJyuuni();","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":" * Runs chatbot.","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" private void runJyuuni() {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" boolean isRun \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Hey its Jyuuni, your helpful assistant.\\n How can I help you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" // Requests user input until program is instructed to end.","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" while (isRun) {","lastModifiedDate":"2023-08-20"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" String input \u003d userInput.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" isRun \u003d Parser.parseCommand(input, taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" storage.writeToFile(taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":" userInput.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"LoMaply":58}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime start;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" protected LocalDateTime end;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" public Event(String title, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" this.end \u003d end;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" String from \u003d start.format(displayFormat);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" String to \u003d end.format(displayFormat);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" String time \u003d String.format(\" (from: %s to: %s)\", from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" return \"[E]\" + super.toString() + time;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" * Convert Event task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" String period \u003d String.format(\" | %s | %s\", Parser.dateFormat(start), Parser.dateFormat(end));","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" return \"E\" + super.toFileString() + period;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":31}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" // Format of date to be received as user input, saved to or read from data file.","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" private static final DateTimeFormatter DATE_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd.MM.yyyy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" * Parses Date from string to LocalDateTime object.","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" * @param dateString String in the DATE_FORMAT form.","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" * @return LocalDateTime object.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" * @throws DateTimeParseException To be handled in parseUserInput().","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" public static LocalDateTime parseDate(String dateString) throws DateTimeParseException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" return LocalDateTime.parse(dateString, DATE_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" * Converts LocalDateTime object to String for storing in data file.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" * @param dateTime LocalDateTime object to be parsed.","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" * @return String in the DATE_FORMAT form.","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" public static String dateFormat(LocalDateTime dateTime) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" return dateTime.format(DATE_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" * Parses and acts on user input for chatbot.","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" * @param userInput String to be parsed.","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" * @param taskList TaskList to be modified based on command used.","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" * @return boolean to determine if chatbot should wait for next command.","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" public static boolean parseCommand(String userInput, TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" String[] splitInput \u003d userInput.split(\" \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" switch (splitInput[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" taskList.changeStatusIndex(index, true);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"mark\" is not a number.","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"You need to provide a valid number\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" taskList.changeStatusIndex(index, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"unmark\" is not a number.","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"You need to provide a valid number\");","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" int index \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" taskList.deleteTask(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" } catch (NumberFormatException e) { // If argument of \"delete\" is not a number.","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"You need to provide a valid number:\\n\" + \" eg. delete 1\");","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" if (splitInput.length !\u003d 2) { // Checks for description before creating task.","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" + \" todo [DESCRIPTION]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":" Task todo \u003d new Todo(splitInput[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":" String[] deadVar \u003d splitInput[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"LoMaply"},"content":" Task deadline \u003d new Deadline(deadVar[0], parseDate(deadVar[1]));","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // String not split due to improper format","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"LoMaply"},"content":" + \" deadline [DESCRIPTION] /by [dd.mm.yyyy]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"LoMaply"},"content":" } catch (DateTimeParseException e) { // Date not formatted properly","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Try the date format [dd.mm.yyyy tttt]:\"","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"LoMaply"},"content":" + \"\\n eg. [05.08.2020 1500] for 5 Aug 2020, 3PM\");","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"LoMaply"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"LoMaply"},"content":" // Using 1 split statement that splits by /(from|to) allows wrong combos like \"/to x /from x\".","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"LoMaply"},"content":" String[] eventVar \u003d splitInput[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"LoMaply"},"content":" String[] times \u003d eventVar[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"LoMaply"},"content":" LocalDateTime start \u003d parseDate(times[0]);","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"LoMaply"},"content":" LocalDateTime end \u003d parseDate(times[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"LoMaply"},"content":" if (start.isAfter(end)) { // Checks that event start \u003c\u003d end","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"An event cannot end before it starts... might wanna check your dates\");","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"LoMaply"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"LoMaply"},"content":" Task event \u003d new Event(eventVar[0], start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // String not split due to improper format","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Wrong format, make sure your command is in the format:\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"LoMaply"},"content":" + \" event [DESCRIPTION] /from [dd.mm.yyyy] /to [dd.mm.yyyy]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"LoMaply"},"content":" } catch (DateTimeParseException e) { // Date not formatted properly","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Try the date format [dd.mm.yyyy tttt]:\"","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"LoMaply"},"content":" + \"\\n eg. [05.08.2020 1500] for 5 Aug 2020, 3PM\");","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"LoMaply"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"LoMaply"},"content":" Ui.output(taskList.listToString());","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"LoMaply"},"content":" case \"end\":","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Come back if you need anything else!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"LoMaply"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"LoMaply"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Sorry, I don\u0027t recognise this comment :(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"LoMaply"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"LoMaply":117}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"import java.io.File;","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":"public class Storage {","lastModifiedDate":"2023-08-26"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" private static final String FILE_NAME \u003d \"TaskData.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" private final String fileDirectory;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" private final String fileLocation;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" public Storage(String fileDirectory) {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" this.fileDirectory \u003d fileDirectory;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" this.fileLocation \u003d fileDirectory + \"/\" + FILE_NAME;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" * Creates directory and txt file for storing task data if they do not exist, else does nothing.","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" private boolean openFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" File directory \u003d new File(fileDirectory);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" File dataFile \u003d new File(fileDirectory + \"/\" + FILE_NAME);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" if (directory.mkdir() \u0026\u0026 dataFile.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"File to store task data have been created and stored at:\\n \"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" + fileDirectory + \"/\" + FILE_NAME);","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" * Write data from ArrayList of tasks to a file.","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" * @param taskList An ArrayList of tasks.","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" public void writeToFile(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" FileWriter file \u003d new FileWriter(fileLocation);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" file.write(taskList.listToStringData());","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" file.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":" * Loads task data from txt file to chatbot.","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" public boolean loadData(TaskList taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" if (!this.openFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"An error occured where the file cannot be read\");","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" File dataFile \u003d new File(fileLocation);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" Scanner reader \u003d new Scanner(dataFile);","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" // Add error checking for wrong data format (probably as long as split works shld be fine)","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" // Maybe add command to just delete data file and create new one if can\u0027t read","lastModifiedDate":"2023-08-26"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":" while (reader.hasNextLine()) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" String data \u003d reader.nextLine();","lastModifiedDate":"2023-08-26"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":" String[] splitInput \u003d data.split(\" \\\\| \");","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" boolean isDone \u003d splitInput[1].equals(\"X\");","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" // Data is in format [type, isDone, title, from/by, to], from/by/to are only present depending on type.","lastModifiedDate":"2023-08-26"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" switch(splitInput[0]) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":" case \"T\":","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"LoMaply"},"content":" Todo todo \u003d new Todo(splitInput[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"LoMaply"},"content":" todo.changeStatus(isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"LoMaply"},"content":" case \"D\":","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"LoMaply"},"content":" Deadline deadline \u003d new Deadline(splitInput[2], Parser.parseDate(splitInput[3]));","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"LoMaply"},"content":" deadline.changeStatus(isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"LoMaply"},"content":" case \"E\":","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"LoMaply"},"content":" LocalDateTime start \u003d Parser.parseDate(splitInput[3]);","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"LoMaply"},"content":" LocalDateTime end \u003d Parser.parseDate(splitInput[4]);","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"LoMaply"},"content":" Event event \u003d new Event(splitInput[2], start, end);","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"LoMaply"},"content":" event.changeStatus(isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"LoMaply"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"LoMaply"},"content":" break;","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"LoMaply"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"LoMaply"},"content":" } catch (ArrayIndexOutOfBoundsException e) { // File formatted with wrong no. of \" | \" dividers for task types.","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"There seems to be a problem with reading in data from:\\n [\" + fileLocation","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"LoMaply"},"content":" + \"]\\n\\n Proceeding will overwrite the current data file [Y/N]:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"LoMaply"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"LoMaply"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-26"},{"lineNumber":98,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"LoMaply"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"LoMaply":101}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" // Format of date to be displayed to user.","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" protected static final DateTimeFormatter displayFormat \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy, hh:mm a\");","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" protected String title;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" protected Boolean isDone;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" public Task(String title) {","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" this.title \u003d title;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" * Get completed status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" * @return X if task is completed, a blank space otherwise.","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":" * Modify status of current task.","lastModifiedDate":"2023-08-26"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" * @param isCompleted New status of task.","lastModifiedDate":"2023-08-26"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" public void changeStatus(boolean isCompleted) {","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" this.isDone \u003d isCompleted;","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" * Converts a task to a formatted string.","lastModifiedDate":"2023-08-26"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":" * @return Status and title of task in string.","lastModifiedDate":"2023-08-26"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" return String.format(\"[%s] %s\", this.getStatus(), title);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" * Returns a base string to be used for storing in data file.","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string, to be further modified by overriding methods in child classes.","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" return String.format(\" | %s | %s\", this.getStatus(), title);","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"LoMaply":48}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" taskList \u003d new ArrayList\u003c\u003e(1);","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" * Modify status of task based on index.","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" * @param index ArrayList index of task to be modified.","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" * @param isCompleted New status of task.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" public void changeStatusIndex(int index, boolean isCompleted) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" Task pendingTask \u003d taskList.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" pendingTask.isDone \u003d isCompleted;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"Task updated as requested:\\n \" + pendingTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" } catch (IndexOutOfBoundsException e) { // When index falls outside ArrayList.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"I can\u0027t modify a task that doesn\u0027t exist...\\n Try a number from the list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"LoMaply"},"content":" * Add task to taskList.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"LoMaply"},"content":" * @param task Task to be added.","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"LoMaply"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"LoMaply"},"content":" taskList.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"LoMaply"},"content":" Ui.taskOutput(task, \"added\", taskList.size());","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"LoMaply"},"content":" * Delete task from taskList.","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"LoMaply"},"content":" * @param index ArrayList index of task.","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"LoMaply"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"LoMaply"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"LoMaply"},"content":" Task delete \u003d taskList.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"LoMaply"},"content":" Ui.taskOutput(delete, \"removed\", taskList.size());","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"LoMaply"},"content":" } catch (IndexOutOfBoundsException e) { // When index falls outside ArrayList.","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"LoMaply"},"content":" Ui.output(\"I can\u0027t remove a task that doesn\u0027t exist...\\n Try a number from the list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"LoMaply"},"content":" * Converts ArrayList of tasks to a formatted string suited for storing in data file.","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string of tasks to store in data file.","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"LoMaply"},"content":" public String listToStringData() {","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"LoMaply"},"content":" StringBuilder fileData \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"LoMaply"},"content":" for (Task task : taskList) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"LoMaply"},"content":" String taskString \u003d task.toFileString() + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"LoMaply"},"content":" fileData.append(taskString);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"LoMaply"},"content":" return fileData.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"LoMaply"},"content":" * Converts ArrayList of tasks to a string as a numbered list for chatbot output.","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"LoMaply"},"content":" * @return List of all tasks, formatted as numbered list.","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"LoMaply"},"content":" public String listToString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"LoMaply"},"content":" StringBuilder allTasks \u003d new StringBuilder(\"Here are your tasks:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"LoMaply"},"content":" int taskNo \u003d taskList.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"LoMaply"},"content":" for (int i \u003d 0; i \u003c taskNo; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"LoMaply"},"content":" allTasks.append(String.format(\"\\n %d.%s\", (i + 1), taskList.get(i).toString()));","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"LoMaply"},"content":" return allTasks.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"LoMaply":73}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"public class Todo extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":" public Todo(String title) {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":" super(title);","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" * Convert To-do task to a string for storing in data file.","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" * @return Formatted string with data for To-do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" return \"T\" + super.toFileString();","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":" * Formats chatbot output with borders, first line indentation and new line character at the end.","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":" * @param message Formatted message to be displayed to user.","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":" public static void output(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":" String line \u003d \" ____________________________________________________________\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":" String template \u003d line + \" %s\\n\" + line;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":" System.out.printf((template) + \"%n\", message);","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":" * Formats chatbot output specifically for adding/removing tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":" * @param task Task added to list.","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":" public static void taskOutput(Task task, String action, int size) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":" String taskMessage \u003d \"I\u0027ve %s the following task as requested:\\n %s\\n \"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":" + \"There are currently %d tasks in your list.\";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":" Ui.output(String.format(taskMessage, action, task.toString(), size));","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"LoMaply":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LoMaply"},"content":"todo buy 2 groceries","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"LoMaply"},"content":"deadline eat lunch /by 1st june mon","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"LoMaply"},"content":"deadline eat lunch /by 01.06.2024 1500","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"LoMaply"},"content":"event holiday /to july","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"LoMaply"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"LoMaply"},"content":"event japan holiday trip /from 08.07.2023 0000 /to 07.07.2023 1930","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"LoMaply"},"content":"event japan holiday trip /from 06.07.2023 0000 /to 07.07.2023 1930","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"LoMaply"},"content":"deadline stuff /by 01 June 25 4am","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"LoMaply"},"content":"hello","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"LoMaply"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"LoMaply"},"content":"mark 4","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"LoMaply"},"content":"unmark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"LoMaply"},"content":"unmark three","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"LoMaply"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"LoMaply"},"content":"delete task 1","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"LoMaply"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"LoMaply"},"content":"delete 3","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"LoMaply"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"LoMaply"},"content":"delete 1","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"LoMaply"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"LoMaply"},"content":"end","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"LoMaply":24}}] diff --git a/LoMaply_ip_master/commits.json b/LoMaply_ip_master/commits.json index ca5d83df..acc06bb3 100644 --- a/LoMaply_ip_master/commits.json +++ b/LoMaply_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LoMaply":[{"date":"2023-08-20","commitResults":[{"hash":"63291ed9b73ad8ea8af3c0520e527069be7adb9a","isMergeCommit":false,"messageTitle":"Add greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5ffa380033bf4fd3537def7eb97a34924ac9cb35","isMergeCommit":false,"messageTitle":"Add end command, chatbot repeats user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"82ebe45d2e86df08b0edd9ddfc04784709364e9b","isMergeCommit":false,"messageTitle":"Add list command, other user inputs are added to task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"487b7d0166e41002c2eeef65d0c3fb8b1e5a329f","isMergeCommit":false,"messageTitle":"Add mark/unmark commands, Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":17}}}]},{"date":"2023-08-21","commitResults":[{"hash":"f4d782dd99081a5508cbc2cf9d5b47b91e7d4315","isMergeCommit":false,"messageTitle":"Add todo, deadline, event classes for task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":7}}},{"hash":"0260cc6ede862bad4d76cb2ce6886b36059226f6","isMergeCommit":false,"messageTitle":"Add automated UI test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":13,"deletions":2}}},{"hash":"1e9af84bcb0288f1d2f6812a64da01145a7b3df7","isMergeCommit":false,"messageTitle":"Add error handling for wrong user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-22","commitResults":[{"hash":"17839e9a7b86155ed75598e143c961f8708a12c5","isMergeCommit":false,"messageTitle":"Add delete command, modify task array to use ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":49,"deletions":33}}}]},{"date":"2023-08-26","commitResults":[{"hash":"19a6fd47b8cbb5d9a5503133646cd2a52036a918","isMergeCommit":false,"messageTitle":"Add minor style changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":90}}},{"hash":"b3a0af9239340f44ea4d419c97d46649b18fff7a","isMergeCommit":false,"messageTitle":"Add Storage class to read/write task data into file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":224,"deletions":58}}}]},{"date":"2023-08-27","commitResults":[{"hash":"ce7f3be7fc7a2aefd7dc5dd9547a424c7c7215dc","isMergeCommit":false,"messageTitle":"Add error checking for loadData in Storage class, chatbot prompt for file error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"f3c1096cd88d7709bcb0212c11ac9baa99075301","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f506f1b9f06de1face8d8ffb354a31f0ff8f1588","isMergeCommit":false,"messageTitle":"Add support for LocalDateTime in Deadline/Event types, Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":78,"deletions":36}}},{"hash":"3df2faca72e0b55ece63d2714742cb47415e7536","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LoMaply":{"java":452,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":27}},"authorContributionVariance":{"LoMaply":19908.959},"authorDisplayNameMap":{"LoMaply":"CS2103T-F12-4 LINU.. LEE"}} +{"authorDailyContributionsMap":{"LoMaply":[{"date":"2023-08-20","commitResults":[{"hash":"63291ed9b73ad8ea8af3c0520e527069be7adb9a","isMergeCommit":false,"messageTitle":"Add greeting","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5ffa380033bf4fd3537def7eb97a34924ac9cb35","isMergeCommit":false,"messageTitle":"Add end command, chatbot repeats user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":4}}},{"hash":"82ebe45d2e86df08b0edd9ddfc04784709364e9b","isMergeCommit":false,"messageTitle":"Add list command, other user inputs are added to task list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"487b7d0166e41002c2eeef65d0c3fb8b1e5a329f","isMergeCommit":false,"messageTitle":"Add mark/unmark commands, Task class","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":17}}}]},{"date":"2023-08-21","commitResults":[{"hash":"f4d782dd99081a5508cbc2cf9d5b47b91e7d4315","isMergeCommit":false,"messageTitle":"Add todo, deadline, event classes for task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":7}}},{"hash":"0260cc6ede862bad4d76cb2ce6886b36059226f6","isMergeCommit":false,"messageTitle":"Add automated UI test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":13,"deletions":2}}},{"hash":"1e9af84bcb0288f1d2f6812a64da01145a7b3df7","isMergeCommit":false,"messageTitle":"Add error handling for wrong user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-22","commitResults":[{"hash":"17839e9a7b86155ed75598e143c961f8708a12c5","isMergeCommit":false,"messageTitle":"Add delete command, modify task array to use ArrayList","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":49,"deletions":33}}}]},{"date":"2023-08-26","commitResults":[{"hash":"19a6fd47b8cbb5d9a5503133646cd2a52036a918","isMergeCommit":false,"messageTitle":"Add minor style changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":90}}},{"hash":"b3a0af9239340f44ea4d419c97d46649b18fff7a","isMergeCommit":false,"messageTitle":"Add Storage class to read/write task data into file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":224,"deletions":58}}}]},{"date":"2023-08-27","commitResults":[{"hash":"ce7f3be7fc7a2aefd7dc5dd9547a424c7c7215dc","isMergeCommit":false,"messageTitle":"Add error checking for loadData in Storage class, chatbot prompt for file error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"f3c1096cd88d7709bcb0212c11ac9baa99075301","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f506f1b9f06de1face8d8ffb354a31f0ff8f1588","isMergeCommit":false,"messageTitle":"Add support for LocalDateTime in Deadline/Event types, Update test cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":2},"java":{"insertions":78,"deletions":36}}},{"hash":"3df2faca72e0b55ece63d2714742cb47415e7536","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"7438d02fc9d02ca19c9ba7b32f89c2a29aad9a20","isMergeCommit":false,"messageTitle":"Refactor code for additional OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":278,"deletions":235}}},{"hash":"2d3d73c3e7291b8e85929336bc60bbf327b11dfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LoMaply":{"java":496,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":24}},"authorContributionVariance":{"LoMaply":32045.88},"authorDisplayNameMap":{"LoMaply":"CS2103T-F12-4 LINU.. LEE"}} diff --git a/Respirayson_ip_master/authorship.json b/Respirayson_ip_master/authorship.json index 087192ef..9ef7693b 100644 --- a/Respirayson_ip_master/authorship.json +++ b/Respirayson_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Deadlines are tasks that need to be done","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * before a specific date/time.","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" * Encapsulates the logic of a Chat bot","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" * Represents the different commands accepted by the chatbot","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" enum Command {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" DELETE","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" String LINE \u003d \"_______________________________________\";","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" String logo \u003d \" _ _ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" \" _ __ ___ ___ _ __ (_)_ __ ___ _ __ (_)_ __\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" \"| \u0027__/ _ \\\\/ __| \u0027_ \\\\| | \u0027__/ _ \\\\| \u0027_ \\\\| \\\\ \\\\/ /\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" \"| | | __/\\\\__ \\\\ |_) | | | | (_) | | | | |\u003e \u003c \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" \"|_| \\\\___||___/ .__/|_|_| \\\\___/|_| |_|_/_/\\\\_\\\\\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" \" |_| \";","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Hello! I\u0027m your personal AI\");","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-19"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" while (true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" // Use Regex to extract the first word even with preceding whitespace","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" String command \u003d input.replaceAll(\"^\\\\W*\\\\b(\\\\w+).*\", \"$1\").toUpperCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" try { // In case there are exceptions","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" // User wants to end the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.BYE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-19"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // List out all the tasks in the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.LIST.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" throw new EmptyTaskListException();","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, task));","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.MARK.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-21"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" task.markDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Great job completing the task! I\u0027ve marked it as done.\");","lastModifiedDate":"2023-08-20"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" // Unmark a done task","lastModifiedDate":"2023-08-21"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.UNMARK.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" task.markUndone();","lastModifiedDate":"2023-08-20"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Oops... Did you mark it incorrectly?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" // Add a todo to the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.TODO.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"^\\\\s*todo\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"todo\");","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":120,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new ToDo(desc);","lastModifiedDate":"2023-08-21"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":" // Add a deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.DEADLINE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" String desc_time \u003d input.replaceAll(\"^\\\\s*deadline\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" String[] strings \u003d desc_time.split(\" /by \");","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" if (desc_time.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"deadline\");","lastModifiedDate":"2023-08-21"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" if (strings.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" throw new UnknownTimeException(strings[0]);","lastModifiedDate":"2023-08-21"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Deadline(strings[0], strings[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" // Add an Event","lastModifiedDate":"2023-08-21"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.EVENT.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" String content \u003d input.replaceAll(\"^\\\\s*event\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" if (content.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"event\");","lastModifiedDate":"2023-08-21"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" String[] desc_time \u003d content.split(\" /from \");","lastModifiedDate":"2023-08-21"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" String[] times \u003d desc_time[1].split(\" /to \");","lastModifiedDate":"2023-08-21"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" if (times.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":" throw new UnknownTimeException(desc_time[0]);","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Event(desc_time[0], times[0], times[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":172,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":173,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":174,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":175,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":176,"author":{"gitId":"Respirayson"},"content":" // Delete a task from the chatbot","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.DELETE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":179,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":182,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"Respirayson"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Noted... I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":" throw new UnknownCommandException(input);","lastModifiedDate":"2023-08-21"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":198,"author":{"gitId":"Respirayson"},"content":" } catch (UnknownTimeException | UnknownCommandException | EmptyTaskListException |","lastModifiedDate":"2023-08-21"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":" NoDescriptionException | NoIndexException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-21"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Respironix has encountered an issue; exiting\");","lastModifiedDate":"2023-08-20"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Respirayson":207,"-":4}},{"path":"src/main/java/EmptyTaskListException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an EmptyTaskListException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class EmptyTaskListException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public EmptyTaskListException() {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(\"☹ OOPS!!! The task list cannot be empty.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":11}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates an Event.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Tasks that start at a specific date/time and","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * ends at a specific date/time.","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" String start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public Event(String description, String start, String deadline) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.start, this.deadline);","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":24}},{"path":"src/main/java/NoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents a NoDescriptionException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class NoDescriptionException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public NoDescriptionException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! Where is your description for %s?\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":12}},{"path":"src/main/java/NoIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"public class NoIndexException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" public NoIndexException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! The index %s does not exist.\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Task in the Chat bot.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" protected boolean done;","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" public void markDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" return (this.done ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" return String.format(\"%s %s\", getStatus(), this.description);","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Respirayson":33}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Todo in the chat bot.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Tasks without any date/time attached.","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":18}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an UnknownCommandException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what %s means :-(\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":12}},{"path":"src/main/java/UnknownTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an UnknownTimeException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class UnknownTimeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public UnknownTimeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! Sorry but that what is that time? %s is missing it\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"mark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":15}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"[T] | [ ] | join comclub","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"[D] | [ ] | return book | Sunday","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"[E] | [ ] | project meeting | Mon 2pm-4pm","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Respirayson":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Deadlines are tasks that need to be done","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * before a specific date/time.","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" public Deadline(String description, String deadline) {","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" public Deadline(String description, String deadline, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[D] | %s | %s\", super.toString(), this.deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"import java.util.List;","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" * Encapsulates the logic of a Chat bot","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" /**","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" * Represents the different commands accepted by the chatbot","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" private enum Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" UNMARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" DELETE","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" // CONSTANTS","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" private static final String LINE \u003d \"_______________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" private static final String DIR_NAME \u003d \"./data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":" private static final String FILE_NAME \u003d \"duke.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" private static void sendIntroduction() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" String logo \u003d \" _ _ \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" \" _ __ ___ ___ _ __ (_)_ __ ___ _ __ (_)_ __\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":" \"| \u0027__/ _ \\\\/ __| \u0027_ \\\\| | \u0027__/ _ \\\\| \u0027_ \\\\| \\\\ \\\\/ /\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":" \"| | | __/\\\\__ \\\\ |_) | | | | (_) | | | | |\u003e \u003c \\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"Respirayson"},"content":" \"|_| \\\\___||___/ .__/|_|_| \\\\___/|_| |_|_/_/\\\\_\\\\\\n\" +","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"Respirayson"},"content":" \" |_| \";","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":42,"author":{"gitId":"Respirayson"},"content":" System.out.println(logo);","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Hello! I\u0027m your personal AI\");","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-19"},{"lineNumber":46,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":47,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"Respirayson"},"content":" private static List\u003cTask\u003e loadTasksFromStorage(String dirName, String fileName) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"Respirayson"},"content":" File file \u003d new File(dirName + File.separator + fileName);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"Respirayson"},"content":" // scan for the storage file","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"Respirayson"},"content":" Scanner s \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"Respirayson"},"content":" while (s.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"Respirayson"},"content":" String curr \u003d s.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"Respirayson"},"content":" String[] segments \u003d curr.split(\" \\\\| \");","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"Respirayson"},"content":" // check for the correct format - minimum 3 different segments","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"Respirayson"},"content":" if ((!segments[0].equals(\"[T]\") \u0026\u0026 !segments[0].equals(\"[D]\")","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"Respirayson"},"content":" \u0026\u0026 !segments[0].equals(\"[E]\")) || segments.length \u003c 3) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"Respirayson"},"content":" s.close(); // need to close scanner otherwise cannot replace file","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"Respirayson"},"content":" throw new UnrecognisedFormatException();","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"Respirayson"},"content":" boolean isDone \u003d segments[1].equals(\"[X]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"Respirayson"},"content":" if (segments[0].equals(\"[T]\")) { // To do task","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"Respirayson"},"content":" tasks.add(new ToDo(segments[2], isDone));","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"Respirayson"},"content":" } else if (segments[0].equals(\"[D]\")) { // Deadline task","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"Respirayson"},"content":" tasks.add(new Deadline(segments[2], segments[3], isDone));","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"Respirayson"},"content":" } else { // Event task","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"Respirayson"},"content":" String[] times \u003d segments[3].split(\"-\");","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"Respirayson"},"content":" tasks.add(new Event(segments[2], times[0], times[1], isDone));","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"Respirayson"},"content":" } catch (FileNotFoundException e) { // File does not exist","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"Respirayson"},"content":" if (new File(dirName).mkdir()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Sorry, directory does not exist. Creating now...\");","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"Respirayson"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Sorry, file does not exist. Creating now...\");","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"Respirayson"},"content":" } catch (Exception error) {","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Error... Unable to create files\");","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"Respirayson"},"content":" } catch (UnrecognisedFormatException e) { // File is corrupted","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"Respirayson"},"content":" if (file.delete()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Deleting corrupted file...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"Respirayson"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Replacing file now...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"Respirayson"},"content":" } catch (Exception error) {","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Error... Unable to create new file...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"Respirayson"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"Respirayson"},"content":" private static void writeFile(String filePath, String text) {","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"Respirayson"},"content":" FileWriter fw \u003d new FileWriter(filePath, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"Respirayson"},"content":" fw.write(text);","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"Respirayson"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"Respirayson"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Sorry... Unable to store tasks...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":118,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":121,"author":{"gitId":"Respirayson"},"content":" List\u003cTask\u003e tasks \u003d loadTasksFromStorage(DIR_NAME, FILE_NAME);","lastModifiedDate":"2023-08-28"},{"lineNumber":122,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"Respirayson"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"Respirayson"},"content":" sendIntroduction();","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":127,"author":{"gitId":"Respirayson"},"content":" try {","lastModifiedDate":"2023-08-20"},{"lineNumber":128,"author":{"gitId":"Respirayson"},"content":" while (true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":129,"author":{"gitId":"Respirayson"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-20"},{"lineNumber":130,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":131,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":132,"author":{"gitId":"Respirayson"},"content":" // Use Regex to extract the first word even with preceding whitespace","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"Respirayson"},"content":" String command \u003d input.replaceAll(\"^\\\\W*\\\\b(\\\\w+).*\", \"$1\").toUpperCase();","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"Respirayson"},"content":" try { // In case there are exceptions","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"Respirayson"},"content":" // User wants to end the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":137,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.BYE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"Respirayson"},"content":" // store the data into the storage","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"Respirayson"},"content":" StringBuilder textForStorage \u003d new StringBuilder();","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"Respirayson"},"content":" for (Task task : tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"Respirayson"},"content":" textForStorage.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":144,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":145,"author":{"gitId":"Respirayson"},"content":" writeFile(DIR_NAME + File.separator + FILE_NAME, textForStorage.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":146,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":147,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-19"},{"lineNumber":148,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-19"},{"lineNumber":149,"author":{"gitId":"Respirayson"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":150,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":151,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":152,"author":{"gitId":"Respirayson"},"content":" // List out all the tasks in the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.LIST.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":155,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-21"},{"lineNumber":156,"author":{"gitId":"Respirayson"},"content":" throw new EmptyTaskListException();","lastModifiedDate":"2023-08-21"},{"lineNumber":157,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":158,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"Respirayson"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-20"},{"lineNumber":160,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-20"},{"lineNumber":161,"author":{"gitId":"Respirayson"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, task));","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":163,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":164,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":165,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":166,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":167,"author":{"gitId":"Respirayson"},"content":" // Mark a task as done","lastModifiedDate":"2023-08-21"},{"lineNumber":168,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.MARK.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-21"},{"lineNumber":176,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":177,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":178,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"Respirayson"},"content":" task.markDone();","lastModifiedDate":"2023-08-20"},{"lineNumber":180,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Great job completing the task! I\u0027ve marked it as done.\");","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"Respirayson"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":182,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":183,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":184,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":185,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":186,"author":{"gitId":"Respirayson"},"content":" // Unmark a done task","lastModifiedDate":"2023-08-21"},{"lineNumber":187,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.UNMARK.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-21"},{"lineNumber":195,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":196,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":197,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-20"},{"lineNumber":198,"author":{"gitId":"Respirayson"},"content":" task.markUndone();","lastModifiedDate":"2023-08-20"},{"lineNumber":199,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Oops... Did you mark it incorrectly?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":200,"author":{"gitId":"Respirayson"},"content":" System.out.println(task);","lastModifiedDate":"2023-08-20"},{"lineNumber":201,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":202,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-20"},{"lineNumber":203,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":204,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"Respirayson"},"content":" // Add a todo to the chatbot","lastModifiedDate":"2023-08-21"},{"lineNumber":206,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.TODO.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"^\\\\s*todo\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":208,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":209,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"todo\");","lastModifiedDate":"2023-08-21"},{"lineNumber":210,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":211,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":212,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new ToDo(desc);","lastModifiedDate":"2023-08-21"},{"lineNumber":213,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":214,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":215,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":216,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":217,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":218,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":219,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":220,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":221,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":222,"author":{"gitId":"Respirayson"},"content":" // Add a deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":223,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.DEADLINE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"Respirayson"},"content":" String desc_time \u003d input.replaceAll(\"^\\\\s*deadline\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":225,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":226,"author":{"gitId":"Respirayson"},"content":" String[] strings \u003d desc_time.split(\" /by \");","lastModifiedDate":"2023-08-21"},{"lineNumber":227,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":228,"author":{"gitId":"Respirayson"},"content":" if (desc_time.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":229,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"deadline\");","lastModifiedDate":"2023-08-21"},{"lineNumber":230,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":231,"author":{"gitId":"Respirayson"},"content":" if (strings.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":232,"author":{"gitId":"Respirayson"},"content":" throw new UnknownTimeException(strings[0]);","lastModifiedDate":"2023-08-21"},{"lineNumber":233,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":234,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":235,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Deadline(strings[0], strings[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":236,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":237,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":238,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":239,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":240,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":241,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":242,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":243,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":244,"author":{"gitId":"Respirayson"},"content":" // Add an Event","lastModifiedDate":"2023-08-21"},{"lineNumber":245,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.EVENT.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"Respirayson"},"content":" String content \u003d input.replaceAll(\"^\\\\s*event\\\\s*\", \"\");","lastModifiedDate":"2023-08-21"},{"lineNumber":247,"author":{"gitId":"Respirayson"},"content":" if (content.equals(\"\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":248,"author":{"gitId":"Respirayson"},"content":" throw new NoDescriptionException(\"event\");","lastModifiedDate":"2023-08-21"},{"lineNumber":249,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":250,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":251,"author":{"gitId":"Respirayson"},"content":" String[] desc_time \u003d content.split(\" /from \");","lastModifiedDate":"2023-08-21"},{"lineNumber":252,"author":{"gitId":"Respirayson"},"content":" String[] times \u003d desc_time[1].split(\" /to \");","lastModifiedDate":"2023-08-21"},{"lineNumber":253,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":254,"author":{"gitId":"Respirayson"},"content":" if (times.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":255,"author":{"gitId":"Respirayson"},"content":" throw new UnknownTimeException(desc_time[0]);","lastModifiedDate":"2023-08-21"},{"lineNumber":256,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":257,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":258,"author":{"gitId":"Respirayson"},"content":" Task task \u003d new Event(desc_time[0], times[0], times[1]);","lastModifiedDate":"2023-08-21"},{"lineNumber":259,"author":{"gitId":"Respirayson"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":260,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Got it!. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-21"},{"lineNumber":261,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-21"},{"lineNumber":262,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-21"},{"lineNumber":263,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-21"},{"lineNumber":264,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-21"},{"lineNumber":265,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":266,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":267,"author":{"gitId":"Respirayson"},"content":" // Delete a task from the chatbot","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"Respirayson"},"content":" if (command.equals(Command.DELETE.name())) {","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"Respirayson"},"content":" String desc \u003d input.replaceAll(\"[^0-9]\", \"\");","lastModifiedDate":"2023-08-22"},{"lineNumber":270,"author":{"gitId":"Respirayson"},"content":" if (desc.equals(\"\")) {","lastModifiedDate":"2023-08-22"},{"lineNumber":271,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(\"No Index\");","lastModifiedDate":"2023-08-22"},{"lineNumber":272,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":273,"author":{"gitId":"Respirayson"},"content":" int index \u003d Integer.parseInt(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":274,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"Respirayson"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2023-08-22"},{"lineNumber":276,"author":{"gitId":"Respirayson"},"content":" throw new NoIndexException(Integer.toString(index));","lastModifiedDate":"2023-08-22"},{"lineNumber":277,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"Respirayson"},"content":" Task task \u003d tasks.get(index - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":279,"author":{"gitId":"Respirayson"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-22"},{"lineNumber":280,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Noted... I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-22"},{"lineNumber":281,"author":{"gitId":"Respirayson"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2023-08-22"},{"lineNumber":282,"author":{"gitId":"Respirayson"},"content":" System.out.printf(\"Now you have %d tasks in the list%n\", tasks.size());","lastModifiedDate":"2023-08-22"},{"lineNumber":283,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"Respirayson"},"content":" continue;","lastModifiedDate":"2023-08-22"},{"lineNumber":285,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":286,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":287,"author":{"gitId":"Respirayson"},"content":" throw new UnknownCommandException(input);","lastModifiedDate":"2023-08-21"},{"lineNumber":288,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":289,"author":{"gitId":"Respirayson"},"content":" } catch (UnknownTimeException | UnknownCommandException | EmptyTaskListException |","lastModifiedDate":"2023-08-21"},{"lineNumber":290,"author":{"gitId":"Respirayson"},"content":" NoDescriptionException | NoIndexException e) {","lastModifiedDate":"2023-08-21"},{"lineNumber":291,"author":{"gitId":"Respirayson"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":292,"author":{"gitId":"Respirayson"},"content":" System.out.println(LINE);","lastModifiedDate":"2023-08-20"},{"lineNumber":293,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":294,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":295,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":296,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":297,"author":{"gitId":"Respirayson"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-20"},{"lineNumber":298,"author":{"gitId":"Respirayson"},"content":" System.out.println(e);","lastModifiedDate":"2023-08-21"},{"lineNumber":299,"author":{"gitId":"Respirayson"},"content":" System.out.println(\"Respironix has encountered an issue; exiting\");","lastModifiedDate":"2023-08-20"},{"lineNumber":300,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":301,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":302,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Respirayson":298,"-":4}},{"path":"src/main/java/EmptyTaskListException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an EmptyTaskListException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class EmptyTaskListException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public EmptyTaskListException() {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(\"☹ OOPS!!! The task list cannot be empty.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":11}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates an Event.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Tasks that start at a specific date/time and","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * ends at a specific date/time.","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" String start;","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" String deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public Event(String description, String start, String deadline) {","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" public Event(String description, String start, String deadline, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" this.start \u003d start;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[E] | %s | %s-%s\", super.toString(), this.start, this.deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":30}},{"path":"src/main/java/NoDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents a NoDescriptionException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class NoDescriptionException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public NoDescriptionException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! Where is your description for %s?\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":12}},{"path":"src/main/java/NoIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"public class NoIndexException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" public NoIndexException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! The index %s does not exist.\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":6}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Task in the Chat bot.","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" protected String description;","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":" public void markDone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"Respirayson"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"Respirayson"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"Respirayson"},"content":" public String getStatus() {","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"Respirayson"},"content":" return (this.isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"Respirayson"},"content":" return String.format(\"%s | %s\", getStatus(), this.description);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"Respirayson":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Encapsulates a Todo in the chat bot.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" * Tasks without any date/time attached.","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" super(description);","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":" super(description, isDone);","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"Respirayson"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"Respirayson"},"content":" public String toString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"Respirayson"},"content":" return String.format(\"[T] | %s\", super.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":22}},{"path":"src/main/java/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an UnknownCommandException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class UnknownCommandException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public UnknownCommandException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what %s means :-(\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":12}},{"path":"src/main/java/UnknownTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":" * Represents an UnknownTimeException.","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" *","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" * @author Rayson","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"public class UnknownTimeException extends Exception {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":" public UnknownTimeException(String message) {","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":" super(String.format(\"☹ OOPS!!! Sorry but that what is that time? %s is missing it\", message));","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":11}},{"path":"src/main/java/UnrecognisedFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"public class UnrecognisedFormatException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":" public UnrecognisedFormatException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":" super(\"Sorry!!! This data file is corrupted and we do not recognise the format of the file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"Respirayson":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Respirayson"},"content":"todo borrow book","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"Respirayson"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"Respirayson"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"Respirayson"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"Respirayson"},"content":"mark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"Respirayson"},"content":"unmark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"Respirayson"},"content":"delete 2","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"Respirayson"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"Respirayson"},"content":"delete 1","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"Respirayson"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"Respirayson"},"content":"bye","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"Respirayson":15}}] diff --git a/Respirayson_ip_master/commits.json b/Respirayson_ip_master/commits.json index 1dad329f..218c4738 100644 --- a/Respirayson_ip_master/commits.json +++ b/Respirayson_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Respirayson":[{"date":"2023-08-19","commitResults":[{"hash":"4573f900cf7def0f47319aeb9c3dd22f2324b4bd","isMergeCommit":false,"messageTitle":"Add rename, greet and exit","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}}]},{"date":"2023-08-20","commitResults":[{"hash":"71bc1f4613f63414c332c1a4425d6da47436a3b9","isMergeCommit":false,"messageTitle":"add echo functionality","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":4}}},{"hash":"6f575856fc9165c78b1f064b5c61d9bb8009ffa1","isMergeCommit":false,"messageTitle":"add add, list functionality","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":1}}},{"hash":"23f553647f3f321d0385f2c252e5b049bd488e6c","isMergeCommit":false,"messageTitle":"add mark as done functionality","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":7}}}]},{"date":"2023-08-21","commitResults":[{"hash":"f12f5f163bc61df38a01217a81e4f15ed0e3c809","isMergeCommit":false,"messageTitle":"add todos, events and deadlines functionality","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":2}}},{"hash":"4526e1ed0005300343dac813f0622f312b140d54","isMergeCommit":false,"messageTitle":"added the input.txt and expected.txt","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":6,"deletions":12}}},{"hash":"cdc9a6d7aade944384504a2bb90baa67aa810092","isMergeCommit":false,"messageTitle":"add new exceptions and add logic","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":72}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f02eadac84b0fcbc2d6dd109ae9b64311a07df44","isMergeCommit":false,"messageTitle":"add delete functionality","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":33,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a0ae6ee54f6d4e9b49eadc4d5e751fcc476282db","isMergeCommit":false,"messageTitle":"converted commands to enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}}]}]},"authorFileTypeContributionMap":{"Respirayson":{"java":356,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":15}},"authorContributionVariance":{"Respirayson":15824.409},"authorDisplayNameMap":{"Respirayson":"CS2103T-T15-1 YEAP..YSON"}} +{"authorDailyContributionsMap":{"Respirayson":[{"date":"2023-08-19","commitResults":[{"hash":"4573f900cf7def0f47319aeb9c3dd22f2324b4bd","isMergeCommit":false,"messageTitle":"Add rename, greet and exit","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}}]},{"date":"2023-08-20","commitResults":[{"hash":"71bc1f4613f63414c332c1a4425d6da47436a3b9","isMergeCommit":false,"messageTitle":"add echo functionality","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":4}}},{"hash":"6f575856fc9165c78b1f064b5c61d9bb8009ffa1","isMergeCommit":false,"messageTitle":"add add, list functionality","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":1}}},{"hash":"23f553647f3f321d0385f2c252e5b049bd488e6c","isMergeCommit":false,"messageTitle":"add mark as done functionality","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":7}}}]},{"date":"2023-08-21","commitResults":[{"hash":"f12f5f163bc61df38a01217a81e4f15ed0e3c809","isMergeCommit":false,"messageTitle":"add todos, events and deadlines functionality","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":2}}},{"hash":"4526e1ed0005300343dac813f0622f312b140d54","isMergeCommit":false,"messageTitle":"added the input.txt and expected.txt","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":6,"deletions":12}}},{"hash":"cdc9a6d7aade944384504a2bb90baa67aa810092","isMergeCommit":false,"messageTitle":"add new exceptions and add logic","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":72}}}]},{"date":"2023-08-22","commitResults":[{"hash":"f02eadac84b0fcbc2d6dd109ae9b64311a07df44","isMergeCommit":false,"messageTitle":"add delete functionality","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":33,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"a0ae6ee54f6d4e9b49eadc4d5e751fcc476282db","isMergeCommit":false,"messageTitle":"converted commands to enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}}]},{"date":"2023-08-27","commitResults":[{"hash":"df91e1415e199343f03e91e19500f49816a0a0c2","isMergeCommit":false,"messageTitle":"Add logic to read file from storage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":38,"deletions":6}}}]},{"date":"2023-08-28","commitResults":[{"hash":"a9cb87b349a12da3694bfb3c6f69ae2b961b6fc2","isMergeCommit":false,"messageTitle":"Add exceptions and transfer content from file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":87,"deletions":16}}},{"hash":"fc4d1ab4cfa0093d74eea69ada5a605a62e520a7","isMergeCommit":false,"messageTitle":"Change backslash to File.separator","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":3}}},{"hash":"ddfd41a0d98fb33c48618f6a65dce73088b1f85e","isMergeCommit":false,"messageTitle":"Add write file functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":20,"deletions":1}}},{"hash":"01e95b8afc7a8a33a2562daf8eb0a5709a2fdbe7","isMergeCommit":false,"messageTitle":"Delete unnecessary imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"3a7cc6566b34a8d6d5839848b9da256061d80df9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Respirayson":{"java":474,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"Respirayson":11618.976},"authorDisplayNameMap":{"Respirayson":"CS2103T-T15-1 YEAP..YSON"}} diff --git a/TiwKangXu_ip_master/authorship.json b/TiwKangXu_ip_master/authorship.json index a11d019f..fcca8d99 100644 --- a/TiwKangXu_ip_master/authorship.json +++ b/TiwKangXu_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" * A chatbot that helps to record tasks.","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" Scanner sc;","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" public Duke() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" this.storage \u003d new Storage(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" this.parser \u003d new Parser(tasks, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" * Greets by chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" private void greet() {","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\" Hello! I\u0027m Jokey :) \\n What can I do for you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" storage.load();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" greet();","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" parser.interact();","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" duke.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"TiwKangXu":54,"-":4}},{"path":"src/main/java/duke/command/FirstWord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"public enum FirstWord {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":4}},{"path":"src/main/java/duke/exception/DukeEmptyToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles creating To Do event without description.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeEmptyToDoException extends DukeException{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":11}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Parent class of all Duke Exceptions.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return \" :\u003c OOPS! \";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":11}},{"path":"src/main/java/duke/exception/DukeInvalidDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"public class DukeInvalidDateFormatException extends DukeException{","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"Invalid date format. Date format should be YYYY-MM-DD.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":7}},{"path":"src/main/java/duke/exception/DukeInvalidSavedToFileLineType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles unknown command entered.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeInvalidSavedToFileLineType extends DukeException{","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"Wrong task type saved in disc.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":12}},{"path":"src/main/java/duke/exception/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles unknown command entered.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeUnknownCommandException extends DukeException{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"I\u0027m sorry, but I don\u0027t know what that means.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":12}},{"path":"src/main/java/duke/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.command.FirstWord;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeEmptyToDoException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeInvalidDateFormatException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeUnknownCommandException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public Parser(TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" * Adds horizontal line for replies by chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" * @param text","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" private void line(String text) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(text);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" * Exits chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" private void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" this.line(\" Bye~ Hope to see you again soon! \u003ew\u003c\");","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" * Lists out all tasks.","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" private void listOutTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" String tasksList \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" tasksList +\u003d String.format(\"%d. %s\\n\", i + 1, tasks.get(i).toString().trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" this.line(tasksList);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":" * Marks task as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"TiwKangXu"},"content":" private void mark(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Nice! I\u0027ve marked this task as done:\\n %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"TiwKangXu"},"content":" * Marks task as not done.","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"TiwKangXu"},"content":" private void unmark(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"TiwKangXu"},"content":" task.unmark();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Ok, I\u0027ve marked this task as not done yet:\\n %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"TiwKangXu"},"content":" * Adds a To Do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"TiwKangXu"},"content":" private void addToDo(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"TiwKangXu"},"content":" if (reply.length() \u003d\u003d \"todo\".length()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeEmptyToDoException();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.replace(\"todo \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new ToDo(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"TiwKangXu"},"content":" * Adds a Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"TiwKangXu"},"content":" private void addDeadline(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.substring(0, reply.indexOf(\" /by\")).replace(\"deadline \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"TiwKangXu"},"content":" String due \u003d reply.substring(reply.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new Deadline(taskContent, LocalDate.parse(due));","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"TiwKangXu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidDateFormatException();","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"TiwKangXu"},"content":" * Adds an Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"TiwKangXu"},"content":" private void addEvent(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"TiwKangXu"},"content":" String from \u003d reply.substring(reply.indexOf(\"/from\") + 6, reply.indexOf(\" /to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"TiwKangXu"},"content":" String to \u003d reply.substring(reply.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.substring(0, reply.indexOf(\" /from\")).replace(\"event \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new Event(taskContent, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"TiwKangXu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidDateFormatException();","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"TiwKangXu"},"content":" * Deletes a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"TiwKangXu"},"content":" private void delete(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"TiwKangXu"},"content":" Task removedTask \u003d tasks.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" Noted. I\u0027ve removed this task:\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" %s\", removedTask.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Now you have %d task(s) in the list.\", tasks.size()));","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"TiwKangXu"},"content":" storage.save();","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"TiwKangXu"},"content":" * Constructs message for adding task.","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"TiwKangXu"},"content":" * @param task","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"TiwKangXu"},"content":" private void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" Got it. I\u0027ve added this task:\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Now you have %d task(s) in the list.\", tasks.size()));","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"TiwKangXu"},"content":" storage.save();","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"TiwKangXu"},"content":" * Triggers respective actions.","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"TiwKangXu"},"content":" public void interact() {","lastModifiedDate":"2023-08-27"},{"lineNumber":156,"author":{"gitId":"TiwKangXu"},"content":" while(true) {","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"TiwKangXu"},"content":" String reply \u003d sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"TiwKangXu"},"content":" FirstWord firstWord;","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"TiwKangXu"},"content":" firstWord \u003d FirstWord.valueOf(reply.split(\" \")[0].toUpperCase());","lastModifiedDate":"2023-08-27"},{"lineNumber":161,"author":{"gitId":"TiwKangXu"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":162,"author":{"gitId":"TiwKangXu"},"content":" firstWord \u003d FirstWord.INVALID;","lastModifiedDate":"2023-08-27"},{"lineNumber":163,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":165,"author":{"gitId":"TiwKangXu"},"content":" switch (firstWord) {","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"TiwKangXu"},"content":" case BYE:","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"TiwKangXu"},"content":" exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"TiwKangXu"},"content":" case LIST:","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"TiwKangXu"},"content":" listOutTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":172,"author":{"gitId":"TiwKangXu"},"content":" case MARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"TiwKangXu"},"content":" mark(Character.getNumericValue(reply.charAt(5) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":174,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":175,"author":{"gitId":"TiwKangXu"},"content":" case UNMARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":176,"author":{"gitId":"TiwKangXu"},"content":" unmark(Character.getNumericValue(reply.charAt(7) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":177,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":178,"author":{"gitId":"TiwKangXu"},"content":" case TODO:","lastModifiedDate":"2023-08-27"},{"lineNumber":179,"author":{"gitId":"TiwKangXu"},"content":" addToDo(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":180,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":181,"author":{"gitId":"TiwKangXu"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"TiwKangXu"},"content":" addDeadline(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"TiwKangXu"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":185,"author":{"gitId":"TiwKangXu"},"content":" addEvent(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":186,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":187,"author":{"gitId":"TiwKangXu"},"content":" case DELETE:","lastModifiedDate":"2023-08-27"},{"lineNumber":188,"author":{"gitId":"TiwKangXu"},"content":" delete(Character.getNumericValue(reply.charAt(7) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":189,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":190,"author":{"gitId":"TiwKangXu"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeUnknownCommandException();","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"TiwKangXu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"TiwKangXu"},"content":" this.line(e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":198}},{"path":"src/main/java/duke/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeInvalidSavedToFileLineType;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public Storage(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public void save() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" String dataPath \u003d Paths.get(\"data\", \"duke.txt\").toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" File dataFile \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(dataFile));","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" String line \u003d task.saveToFileLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" writer.write(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"File duke.txt not found.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" public void load() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" String dataPath \u003d Paths.get(\"data\", \"duke.txt\").toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" File dataFile \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(dataFile));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" for (String line; (line \u003d reader.readLine()) !\u003d null;) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(fileToTask(line));","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"File duke.txt not found.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(ex.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"TiwKangXu"},"content":" private Task fileToTask(String line) throws DukeInvalidSavedToFileLineType {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"TiwKangXu"},"content":" String[] savedToFileLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"TiwKangXu"},"content":" String type \u003d savedToFileLine[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"TiwKangXu"},"content":" String status \u003d savedToFileLine[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"TiwKangXu"},"content":" String description \u003d savedToFileLine[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"TiwKangXu"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"TiwKangXu"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"TiwKangXu"},"content":" return ToDo.create(status, description);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"TiwKangXu"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"TiwKangXu"},"content":" String due \u003d savedToFileLine[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"TiwKangXu"},"content":" return Deadline.create(status, description, due);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"TiwKangXu"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"TiwKangXu"},"content":" String range \u003d savedToFileLine[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"TiwKangXu"},"content":" String from \u003d range.substring(0, range.indexOf(\" to\")).replace(\"from \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"TiwKangXu"},"content":" String to \u003d range.substring(range.indexOf(\"to \")).replace(\"to \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"TiwKangXu"},"content":" return Event.create(status, description, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"TiwKangXu"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidSavedToFileLineType();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":79}},{"path":"src/main/java/duke/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" public int size() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" return tasks.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" return tasks.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":29}},{"path":"src/main/java/duke/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":4}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" * Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"// private String due;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" public Deadline(String taskContent, LocalDate due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [D] %s (by: %s)\", statusAndTaskContent, due.format(formatter));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public static Deadline create(String status, String description, String due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" Deadline task \u003d new Deadline(description, LocalDate.parse(due));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"D | %s | %s\\n\", super.saveToFileLine(), due.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":36}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":" * Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" public Event(String taskContent, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [E] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" statusAndTaskContent, from.format(formatter), to.format(formatter));","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" public static Event create(String status, String description, String from, String to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" Event task \u003d new Event(description, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"E | %s | from %s to %s\\n\", super.saveToFileLine(), from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":35}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" * Class for tasks created.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" private boolean status;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" private String taskContent;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" protected DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" public Task(String reply) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" this.taskContent \u003d reply;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" * Marks task status as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" status \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" * Marks task status as not done.","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" status \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" if (status) {","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"[X] %s\", taskContent);","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"[ ] %s\", taskContent);","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" public String showContent() {","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" return taskContent;","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"%s | %s\", status ? \"1\" : \"0\", taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" public String formatDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" return LocalDate.parse(date.toString()).format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":54}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * To Do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" public ToDo(String taskContent) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [T] %s\", statusAndTaskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" public static ToDo create(String status, String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" ToDo task \u003d new ToDo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"T | %s\\n\", super.saveToFileLine());","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"todo wakeup happily","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"todo step out of comfort zone","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"mark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"event CS2101 Lecture /from 2023-08-26 /to 2023-08-27","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"todo be engaging in class","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"todo be lazy","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"event CS2106 Tutorial /from 2003-08-18 /to 2023-08-18","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"todo pay attention to lecture","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"delete 5","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"banana~","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"banananaaaaaaa!!!!!","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"event GEC1005 Tutorial /from 0000-01-01 /to 9999-12-31","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"event LAJ2201 Tutorial /from 1998-09-07 /to 1998-10-10","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"deadline sleep /by 2023-10-21","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":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":"TiwKangXu"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"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":{"TiwKangXu":1,"-":37}}] +[{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import duke.main.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" * A chatbot that helps to record tasks.","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" private Parser parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" Scanner sc;","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" public Duke() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" this.storage \u003d new Storage(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" this.parser \u003d new Parser(tasks, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" * Greets by chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" private void greet() {","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\" Hello! I\u0027m Jokey :) \\n What can I do for you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" storage.load();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" greet();","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" parser.interact();","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" duke.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"TiwKangXu":54,"-":4}},{"path":"src/main/java/duke/command/FirstWord.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"public enum FirstWord {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":4}},{"path":"src/main/java/duke/exception/DukeEmptyToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles creating To Do event without description.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeEmptyToDoException extends DukeException{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":11}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Parent class of all Duke Exceptions.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return \" :\u003c OOPS! \";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":11}},{"path":"src/main/java/duke/exception/DukeInvalidDateFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"public class DukeInvalidDateFormatException extends DukeException{","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"Invalid date format. Date format should be YYYY-MM-DD.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":7}},{"path":"src/main/java/duke/exception/DukeInvalidSavedToFileLineType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles unknown command entered.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeInvalidSavedToFileLineType extends DukeException{","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"Wrong task type saved in disc.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":12}},{"path":"src/main/java/duke/exception/DukeUnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * Handles unknown command entered.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class DukeUnknownCommandException extends DukeException{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" return super.toString() + \"I\u0027m sorry, but I don\u0027t know what that means.\";","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":12}},{"path":"src/main/java/duke/main/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.command.FirstWord;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeEmptyToDoException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeInvalidDateFormatException;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeUnknownCommandException;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public Parser(TaskList tasks, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" * Adds horizontal line for replies by chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" * @param text","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" private void line(String text) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(text);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"------------------------------------------\");","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" * Exits chatbot.","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" private void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" this.line(\" Bye~ Hope to see you again soon! \u003ew\u003c\");","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" * Lists out all tasks.","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" private void listOutTasks() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" String tasksList \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" tasksList +\u003d String.format(\"%d. %s\\n\", i + 1, tasks.get(i).toString().trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" this.line(tasksList);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":" * Marks task as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"TiwKangXu"},"content":" private void mark(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Nice! I\u0027ve marked this task as done:\\n %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"TiwKangXu"},"content":" * Marks task as not done.","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"TiwKangXu"},"content":" private void unmark(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"TiwKangXu"},"content":" task.unmark();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Ok, I\u0027ve marked this task as not done yet:\\n %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"TiwKangXu"},"content":" * Adds a To Do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"TiwKangXu"},"content":" private void addToDo(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"TiwKangXu"},"content":" if (reply.length() \u003d\u003d \"todo\".length()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeEmptyToDoException();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.replace(\"todo \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new ToDo(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"TiwKangXu"},"content":" * Adds a Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"TiwKangXu"},"content":" private void addDeadline(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.substring(0, reply.indexOf(\" /by\")).replace(\"deadline \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"TiwKangXu"},"content":" String due \u003d reply.substring(reply.indexOf(\"/by\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new Deadline(taskContent, LocalDate.parse(due));","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"TiwKangXu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidDateFormatException();","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"TiwKangXu"},"content":" * Adds an Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"TiwKangXu"},"content":" * @param reply","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"TiwKangXu"},"content":" * @throws DukeException","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"TiwKangXu"},"content":" private void addEvent(String reply) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"TiwKangXu"},"content":" String from \u003d reply.substring(reply.indexOf(\"/from\") + 6, reply.indexOf(\" /to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"TiwKangXu"},"content":" String to \u003d reply.substring(reply.indexOf(\"/to\") + 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"TiwKangXu"},"content":" String taskContent \u003d reply.substring(0, reply.indexOf(\" /from\")).replace(\"event \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d new Event(taskContent, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"TiwKangXu"},"content":" addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"TiwKangXu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidDateFormatException();","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":128,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":129,"author":{"gitId":"TiwKangXu"},"content":" * Deletes a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":130,"author":{"gitId":"TiwKangXu"},"content":" * @param index","lastModifiedDate":"2023-08-27"},{"lineNumber":131,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":132,"author":{"gitId":"TiwKangXu"},"content":" private void delete(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":133,"author":{"gitId":"TiwKangXu"},"content":" Task removedTask \u003d tasks.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":134,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" Noted. I\u0027ve removed this task:\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":135,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" %s\", removedTask.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Now you have %d task(s) in the list.\", tasks.size()));","lastModifiedDate":"2023-08-27"},{"lineNumber":137,"author":{"gitId":"TiwKangXu"},"content":" storage.save();","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":139,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":140,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":141,"author":{"gitId":"TiwKangXu"},"content":" * Constructs message for adding task.","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"TiwKangXu"},"content":" * @param task","lastModifiedDate":"2023-08-27"},{"lineNumber":143,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":144,"author":{"gitId":"TiwKangXu"},"content":" private void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" Got it. I\u0027ve added this task:\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":146,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(String.format(\" %s\", task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":148,"author":{"gitId":"TiwKangXu"},"content":" this.line(String.format(\" Now you have %d task(s) in the list.\", tasks.size()));","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"TiwKangXu"},"content":" storage.save();","lastModifiedDate":"2023-08-27"},{"lineNumber":150,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":152,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":153,"author":{"gitId":"TiwKangXu"},"content":" * Triggers respective actions.","lastModifiedDate":"2023-08-27"},{"lineNumber":154,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":155,"author":{"gitId":"TiwKangXu"},"content":" public void interact() {","lastModifiedDate":"2023-08-27"},{"lineNumber":156,"author":{"gitId":"TiwKangXu"},"content":" while(true) {","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"TiwKangXu"},"content":" String reply \u003d sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"TiwKangXu"},"content":" FirstWord firstWord;","lastModifiedDate":"2023-08-27"},{"lineNumber":159,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":160,"author":{"gitId":"TiwKangXu"},"content":" firstWord \u003d FirstWord.valueOf(reply.split(\" \")[0].toUpperCase());","lastModifiedDate":"2023-08-27"},{"lineNumber":161,"author":{"gitId":"TiwKangXu"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":162,"author":{"gitId":"TiwKangXu"},"content":" firstWord \u003d FirstWord.INVALID;","lastModifiedDate":"2023-08-27"},{"lineNumber":163,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":164,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":165,"author":{"gitId":"TiwKangXu"},"content":" switch (firstWord) {","lastModifiedDate":"2023-08-27"},{"lineNumber":166,"author":{"gitId":"TiwKangXu"},"content":" case BYE:","lastModifiedDate":"2023-08-27"},{"lineNumber":167,"author":{"gitId":"TiwKangXu"},"content":" exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":168,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":169,"author":{"gitId":"TiwKangXu"},"content":" case LIST:","lastModifiedDate":"2023-08-27"},{"lineNumber":170,"author":{"gitId":"TiwKangXu"},"content":" listOutTasks();","lastModifiedDate":"2023-08-27"},{"lineNumber":171,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":172,"author":{"gitId":"TiwKangXu"},"content":" case MARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":173,"author":{"gitId":"TiwKangXu"},"content":" mark(Character.getNumericValue(reply.charAt(5) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":174,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":175,"author":{"gitId":"TiwKangXu"},"content":" case UNMARK:","lastModifiedDate":"2023-08-27"},{"lineNumber":176,"author":{"gitId":"TiwKangXu"},"content":" unmark(Character.getNumericValue(reply.charAt(7) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":177,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":178,"author":{"gitId":"TiwKangXu"},"content":" case TODO:","lastModifiedDate":"2023-08-27"},{"lineNumber":179,"author":{"gitId":"TiwKangXu"},"content":" addToDo(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":180,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":181,"author":{"gitId":"TiwKangXu"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":182,"author":{"gitId":"TiwKangXu"},"content":" addDeadline(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":183,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"TiwKangXu"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":185,"author":{"gitId":"TiwKangXu"},"content":" addEvent(reply);","lastModifiedDate":"2023-08-27"},{"lineNumber":186,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":187,"author":{"gitId":"TiwKangXu"},"content":" case DELETE:","lastModifiedDate":"2023-08-27"},{"lineNumber":188,"author":{"gitId":"TiwKangXu"},"content":" delete(Character.getNumericValue(reply.charAt(7) - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":189,"author":{"gitId":"TiwKangXu"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":190,"author":{"gitId":"TiwKangXu"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeUnknownCommandException();","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"TiwKangXu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"TiwKangXu"},"content":" this.line(e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":198}},{"path":"src/main/java/duke/main/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import duke.exception.DukeInvalidSavedToFileLineType;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"import java.io.FileReader;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public Storage(TaskList tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public void save() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" String dataPath \u003d Paths.get(\"data\", \"duke.txt\").toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" File dataFile \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(dataFile));","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" String line \u003d task.saveToFileLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" writer.write(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"File duke.txt not found.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":" public void load() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" String dataPath \u003d Paths.get(\"data\", \"duke.txt\").toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" File dataFile \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(dataFile));","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" for (String line; (line \u003d reader.readLine()) !\u003d null;) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(fileToTask(line));","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(\"File duke.txt not found.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" System.out.println(ex.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"TiwKangXu"},"content":" private Task fileToTask(String line) throws DukeInvalidSavedToFileLineType {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"TiwKangXu"},"content":" String[] savedToFileLine \u003d line.split(\" \\\\| \");","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"TiwKangXu"},"content":" String type \u003d savedToFileLine[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"TiwKangXu"},"content":" String status \u003d savedToFileLine[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"TiwKangXu"},"content":" String description \u003d savedToFileLine[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"TiwKangXu"},"content":" switch (type) {","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"TiwKangXu"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"TiwKangXu"},"content":" return ToDo.create(status, description);","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"TiwKangXu"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"TiwKangXu"},"content":" String due \u003d savedToFileLine[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"TiwKangXu"},"content":" return Deadline.create(status, description, due);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"TiwKangXu"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"TiwKangXu"},"content":" String range \u003d savedToFileLine[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"TiwKangXu"},"content":" String from \u003d range.substring(0, range.indexOf(\" to\")).replace(\"from \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"TiwKangXu"},"content":" String to \u003d range.substring(range.indexOf(\"to \")).replace(\"to \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"TiwKangXu"},"content":" return Event.create(status, description, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"TiwKangXu"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"TiwKangXu"},"content":" throw new DukeInvalidSavedToFileLineType();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":79}},{"path":"src/main/java/duke/main/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" public int size() {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" return tasks.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" public Task remove(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" return tasks.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":29}},{"path":"src/main/java/duke/main/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"TiwKangXu":4}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" * Deadline task.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"// private String due;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" public Deadline(String taskContent, LocalDate due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" this.due \u003d due;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [D] %s (by: %s)\", statusAndTaskContent, due.format(formatter));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public static Deadline create(String status, String description, String due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" Deadline task \u003d new Deadline(description, LocalDate.parse(due));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"D | %s | %s\\n\", super.saveToFileLine(), due.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":36}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":" * Event task.","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"public class Event extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate from;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" private LocalDate to;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" public Event(String taskContent, LocalDate from, LocalDate to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [E] %s (from: %s to: %s)\",","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" statusAndTaskContent, from.format(formatter), to.format(formatter));","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" public static Event create(String status, String description, String from, String to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" Event task \u003d new Event(description, LocalDate.parse(from), LocalDate.parse(to));","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"E | %s | from %s to %s\\n\", super.saveToFileLine(), from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":35}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" * Class for tasks created.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"public class Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" private boolean status;","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" private String taskContent;","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" protected DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" public Task(String reply) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" this.status \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" this.taskContent \u003d reply;","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" * Marks task status as done.","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" public void mark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" status \u003d true;","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":" * Marks task status as not done.","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"TiwKangXu"},"content":" public void unmark() {","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"TiwKangXu"},"content":" status \u003d false;","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"TiwKangXu"},"content":" if (status) {","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"[X] %s\", taskContent);","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"TiwKangXu"},"content":" } else {","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"[ ] %s\", taskContent);","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"TiwKangXu"},"content":" public String showContent() {","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"TiwKangXu"},"content":" return taskContent;","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"%s | %s\", status ? \"1\" : \"0\", taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"TiwKangXu"},"content":" public String formatDate(LocalDate date) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"TiwKangXu"},"content":" return LocalDate.parse(date.toString()).format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":54}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":" * To Do task.","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" public ToDo(String taskContent) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" super(taskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" String statusAndTaskContent \u003d super.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\" [T] %s\", statusAndTaskContent);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" public static ToDo create(String status, String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" ToDo task \u003d new ToDo(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" if (status \u003d\u003d \"1\") {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" task.mark();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" public String saveToFileLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":" return String.format(\"T | %s\\n\", super.saveToFileLine());","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":28}},{"path":"src/test/java/duke/main/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.main;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"public class TaskListTest {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" public void add_newTask_taskListExpands(){","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" taskList.add(new Task(\"a\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":" taskList.add(new Task(\"b\"));","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" assertEquals(taskList.size(), 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" public void remove_existingTask_taskListShrinks(){","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":" Task a \u003d new Task(\"a\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"TiwKangXu"},"content":" Task b \u003d new Task(\"b\");","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"TiwKangXu"},"content":" taskList.add(a);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"TiwKangXu"},"content":" taskList.add(b);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"TiwKangXu"},"content":" Task taskRemoved \u003d taskList.remove(1);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"TiwKangXu"},"content":" assertEquals(taskList.size(), 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"TiwKangXu"},"content":" assertEquals(taskRemoved, b);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TiwKangXu":26}},{"path":"src/test/java/duke/task/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"public class ToDoTest {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":" public void toString_correctFormat(){","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":" ToDo toDo \u003d new ToDo(\"abc\");","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":" assertEquals(toDo.toString(), \" [T] [ ] abc\");","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":" public void create_newToDoInstance(){","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":" ToDo toDo \u003d new ToDo(\"abc\");","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":" ToDo toDo1 \u003d ToDo.create(\"0\", \"abc\");","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":" assertEquals(toDo.toString(), toDo1.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"TiwKangXu":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"TiwKangXu"},"content":"todo wakeup happily","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"TiwKangXu"},"content":"todo step out of comfort zone","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"TiwKangXu"},"content":"mark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"TiwKangXu"},"content":"event CS2101 Lecture /from 2023-08-26 /to 2023-08-27","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"TiwKangXu"},"content":"todo be engaging in class","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"TiwKangXu"},"content":"todo be lazy","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"TiwKangXu"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"TiwKangXu"},"content":"event CS2106 Tutorial /from 2003-08-18 /to 2023-08-18","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"TiwKangXu"},"content":"todo pay attention to lecture","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"TiwKangXu"},"content":"delete 5","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"TiwKangXu"},"content":"banana~","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"TiwKangXu"},"content":"banananaaaaaaa!!!!!","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"TiwKangXu"},"content":"event GEC1005 Tutorial /from 0000-01-01 /to 9999-12-31","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"TiwKangXu"},"content":"event LAJ2201 Tutorial /from 1998-09-07 /to 1998-10-10","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"TiwKangXu"},"content":"unmark 1","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"TiwKangXu"},"content":"deadline sleep /by 2023-10-21","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"TiwKangXu"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"TiwKangXu"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"TiwKangXu":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":"TiwKangXu"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"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":{"TiwKangXu":1,"-":37}}] diff --git a/TiwKangXu_ip_master/commits.json b/TiwKangXu_ip_master/commits.json index 8ce74309..70b255ca 100644 --- a/TiwKangXu_ip_master/commits.json +++ b/TiwKangXu_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"TiwKangXu":[{"date":"2023-08-19","commitResults":[{"hash":"4411515996d916e04ffe44a1dc6031f2cf1c6a6a","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","tags":["v0.1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"cc411399fe4819555c73614cc91701488bd651e2","isMergeCommit":false,"messageTitle":"Complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}},{"hash":"a529d7f7c276ea5483da3b5d72139068706eb979","isMergeCommit":false,"messageTitle":"Complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"2d06203125c4137e75de2a773367e308c095bcaa","isMergeCommit":false,"messageTitle":"Complete Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"49814d47571d132e3055a3992c93bc7fec3ce3df","isMergeCommit":false,"messageTitle":"Complete Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":9}}},{"hash":"f41fd005f07c3133e87e9d28c7a7ef22af82a565","isMergeCommit":false,"messageTitle":"Complete Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"e5db8578d0f9181cb4173346ef8545ef1aca22a1","isMergeCommit":false,"messageTitle":"Complete A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":5,"deletions":5},"sh":{"insertions":0,"deletions":0}}},{"hash":"70f4fdfd213875e53a01fee827f143b0846e7466","isMergeCommit":false,"messageTitle":"Complete Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":24}}},{"hash":"ac93910116df1ea950bb40f2db62e106f581c6cd","isMergeCommit":false,"messageTitle":"Complete Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":16}}},{"hash":"40111c8bfdfcf312fe7d3a74782afac992495052","isMergeCommit":false,"messageTitle":"Complete A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":2},"java":{"insertions":50,"deletions":49}}}]},{"date":"2023-08-21","commitResults":[{"hash":"14573be422798052c408cf32d6e22fce65205cc2","isMergeCommit":false,"messageTitle":"Add Documentation","messageBody":"","tags":["Documentation"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":8}}}]},{"date":"2023-08-27","commitResults":[{"hash":"7bdd68bbe15cbe123d0f7607d8ced9dea53c798b","isMergeCommit":false,"messageTitle":"Add documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":12}}},{"hash":"0479730e5966f47d3ecfd55f436439b9573f477f","isMergeCommit":false,"messageTitle":"Draft Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":7}}},{"hash":"c56d01d4d5d0776745bfcbb9fdfdd43cfbe977ef","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":48}}},{"hash":"49f22214470280aff0771eca11908289664ea48a","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":14}}},{"hash":"62b968e619ac058c91e86c99dffe86053ff1b0ab","isMergeCommit":false,"messageTitle":"Complete A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":290,"deletions":0}}},{"hash":"58a4e179119a28bf837deded6a72a4ab5924fa28","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}}]},{"date":"2023-08-28","commitResults":[{"hash":"caef5f974f062553031924b6322b2f85ef8e3027","isMergeCommit":false,"messageTitle":"Complete A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":232},"sh":{"insertions":1,"deletions":1}}},{"hash":"91604a9e97a8e1fb60c93066d0d641ba1aad121d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"TiwKangXu":{"java":574,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"TiwKangXu":54160.746},"authorDisplayNameMap":{"TiwKangXu":"CS2103T-W13-2 TIW ..G XU"}} +{"authorDailyContributionsMap":{"TiwKangXu":[{"date":"2023-08-19","commitResults":[{"hash":"4411515996d916e04ffe44a1dc6031f2cf1c6a6a","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"","tags":["v0.1"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2023-08-20","commitResults":[{"hash":"cc411399fe4819555c73614cc91701488bd651e2","isMergeCommit":false,"messageTitle":"Complete Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":6}}},{"hash":"a529d7f7c276ea5483da3b5d72139068706eb979","isMergeCommit":false,"messageTitle":"Complete Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"2d06203125c4137e75de2a773367e308c095bcaa","isMergeCommit":false,"messageTitle":"Complete Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"49814d47571d132e3055a3992c93bc7fec3ce3df","isMergeCommit":false,"messageTitle":"Complete Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":9}}},{"hash":"f41fd005f07c3133e87e9d28c7a7ef22af82a565","isMergeCommit":false,"messageTitle":"Complete Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"e5db8578d0f9181cb4173346ef8545ef1aca22a1","isMergeCommit":false,"messageTitle":"Complete A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":5,"deletions":5},"sh":{"insertions":0,"deletions":0}}},{"hash":"70f4fdfd213875e53a01fee827f143b0846e7466","isMergeCommit":false,"messageTitle":"Complete Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":24}}},{"hash":"ac93910116df1ea950bb40f2db62e106f581c6cd","isMergeCommit":false,"messageTitle":"Complete Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":16}}},{"hash":"40111c8bfdfcf312fe7d3a74782afac992495052","isMergeCommit":false,"messageTitle":"Complete A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":2},"java":{"insertions":50,"deletions":49}}}]},{"date":"2023-08-21","commitResults":[{"hash":"14573be422798052c408cf32d6e22fce65205cc2","isMergeCommit":false,"messageTitle":"Add Documentation","messageBody":"","tags":["Documentation"],"fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":8}}}]},{"date":"2023-08-27","commitResults":[{"hash":"7bdd68bbe15cbe123d0f7607d8ced9dea53c798b","isMergeCommit":false,"messageTitle":"Add documentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":12}}},{"hash":"0479730e5966f47d3ecfd55f436439b9573f477f","isMergeCommit":false,"messageTitle":"Draft Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":7}}},{"hash":"c56d01d4d5d0776745bfcbb9fdfdd43cfbe977ef","isMergeCommit":false,"messageTitle":"Complete Level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":48}}},{"hash":"49f22214470280aff0771eca11908289664ea48a","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":14}}},{"hash":"62b968e619ac058c91e86c99dffe86053ff1b0ab","isMergeCommit":false,"messageTitle":"Complete A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":5},"java":{"insertions":290,"deletions":0}}},{"hash":"58a4e179119a28bf837deded6a72a4ab5924fa28","isMergeCommit":false,"messageTitle":"Complete Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}}]},{"date":"2023-08-28","commitResults":[{"hash":"caef5f974f062553031924b6322b2f85ef8e3027","isMergeCommit":false,"messageTitle":"Complete A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":232},"sh":{"insertions":1,"deletions":1}}},{"hash":"91604a9e97a8e1fb60c93066d0d641ba1aad121d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027 into branch-A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"7c0e0d9d48213f69476d35a69304678d55cb185e","isMergeCommit":false,"messageTitle":"Complete A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"TiwKangXu":{"java":618,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"TiwKangXu":55246.566},"authorDisplayNameMap":{"TiwKangXu":"CS2103T-W13-2 TIW ..G XU"}} diff --git a/WinSheng1_ip_master/authorship.json b/WinSheng1_ip_master/authorship.json index bcb9cb24..3eb042e5 100644 --- a/WinSheng1_ip_master/authorship.json +++ b/WinSheng1_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" String horizontalLine \u003d \"______________________________________________\";","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine +","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" \"\\nHello i\u0027m ChatterBuddy\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" \"Is there anything I can assist you with today?\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" String userInput;","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" do {","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":" System.out.println((i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":29,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Task to mark cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(5)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":34,"author":{"gitId":"WinSheng1"},"content":" updateTaskStatus(tasks, taskNumber, true, \"Task \" + (taskNumber + 1) + \" is already done!\", \"Great job! Task \" + (taskNumber + 1) + \" is done!\");","lastModifiedDate":"2023-08-25"},{"lineNumber":35,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":38,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":40,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Task to unmark cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"WinSheng1"},"content":" updateTaskStatus(tasks, taskNumber, false, \"Task \" + (taskNumber + 1) + \" is still incomplete.\", \"No worries, Task \" + (taskNumber + 1) + \" is incomplete.\");","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 7) {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Task to be deleted cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"WinSheng1"},"content":" Task deletedTask \u003d tasks.remove(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"This task has been removed\\n \" + deletedTask + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Invalid task number.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":63,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 5) {","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":65,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":66,"author":{"gitId":"WinSheng1"},"content":" String description \u003d userInput.substring(5);","lastModifiedDate":"2023-08-25"},{"lineNumber":67,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":68,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":69,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":72,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 9) {","lastModifiedDate":"2023-08-26"},{"lineNumber":73,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"The description/ deadline of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":74,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(9);","lastModifiedDate":"2023-08-25"},{"lineNumber":76,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fullStr.split(\" /by \");","lastModifiedDate":"2023-08-25"},{"lineNumber":77,"author":{"gitId":"WinSheng1"},"content":" String description \u003d parts[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":78,"author":{"gitId":"WinSheng1"},"content":" String by \u003d parts[1];","lastModifiedDate":"2023-08-25"},{"lineNumber":79,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-25"},{"lineNumber":80,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":81,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"WinSheng1"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-25"},{"lineNumber":84,"author":{"gitId":"WinSheng1"},"content":" if (userInput.length() \u003c\u003d 6) {","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"The description/ time of an event cannot be empty!\");","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(6);","lastModifiedDate":"2023-08-25"},{"lineNumber":88,"author":{"gitId":"WinSheng1"},"content":" String[] partialStr \u003d fullStr.split(\" /from \");","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"WinSheng1"},"content":" String description \u003d partialStr[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"WinSheng1"},"content":" String[] toFrom \u003d partialStr[1].split(\" /to \");","lastModifiedDate":"2023-08-25"},{"lineNumber":91,"author":{"gitId":"WinSheng1"},"content":" String from \u003d toFrom[0];","lastModifiedDate":"2023-08-25"},{"lineNumber":92,"author":{"gitId":"WinSheng1"},"content":" String to \u003d toFrom[1];","lastModifiedDate":"2023-08-25"},{"lineNumber":93,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":94,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":95,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":97,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"WinSheng1"},"content":" throw new DukeException(\"Invalid command.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":99,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":100,"author":{"gitId":"WinSheng1"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":101,"author":{"gitId":"WinSheng1"},"content":" System.out.println(e.getMessage() + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":102,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":104,"author":{"gitId":"WinSheng1"},"content":" } while (!userInput.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2023-08-25"},{"lineNumber":105,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":106,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Goodbye. Catch you later!\" + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":107,"author":{"gitId":"WinSheng1"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":108,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":109,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":110,"author":{"gitId":"WinSheng1"},"content":" private static void updateTaskStatus(ArrayList\u003cTask\u003e tasks, int taskNumber, boolean expectedStatus, String doneMessage, String undoneMessage) {","lastModifiedDate":"2023-08-25"},{"lineNumber":111,"author":{"gitId":"WinSheng1"},"content":" String horizontalLine \u003d \"______________________________________________\";","lastModifiedDate":"2023-08-25"},{"lineNumber":112,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-25"},{"lineNumber":113,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-25"},{"lineNumber":114,"author":{"gitId":"WinSheng1"},"content":" if (task.isDone \u003d\u003d expectedStatus) {","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"WinSheng1"},"content":" System.out.println(doneMessage + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":117,"author":{"gitId":"WinSheng1"},"content":" task.isDone \u003d expectedStatus;","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"WinSheng1"},"content":" System.out.println(undoneMessage + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":119,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":120,"author":{"gitId":"WinSheng1"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"WinSheng1":120,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" super(message);","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"WinSheng1":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to \" + to + \")\";","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":18}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"todo borrow book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"WinSheng1":4}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String by;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" return \"[D]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" return type() + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + by;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":24,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":13,"-":11}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"import java.io.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":" static String horizontalLine \u003d \"___________________________________________________________________\";","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"-"},"content":" static String filePath \u003d \"./data/duke.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine +","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" \"\\nHello i\u0027m ChatterBuddy\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" \"Is there anything I can assist you with today?\\n\" +","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" String userInput;","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":" tasks \u003d load();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" System.out.println(\"Error loading tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":" do {","lastModifiedDate":"2023-08-25"},{"lineNumber":27,"author":{"gitId":"WinSheng1"},"content":" userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] individualWords \u003d userInput.split(\" \");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" String firstWord \u003d individualWords[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" String lowerCapsFirstWord \u003d firstWord.toLowerCase();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"-"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (lowerCapsFirstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" System.out.println(\"You have 0 task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"WinSheng1"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-25"},{"lineNumber":42,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-25"},{"lineNumber":43,"author":{"gitId":"WinSheng1"},"content":" System.out.println((i + 1) + \".\" + task.toString());","lastModifiedDate":"2023-08-25"},{"lineNumber":44,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":45,"author":{"gitId":"WinSheng1"},"content":" System.out.println(horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":46,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"Task to mark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(5)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"-"},"content":" task.updateTaskStatus(true, \"Task \" + (taskNumber + 1) + \" is already done!\", \"Great job! Task \" + (taskNumber + 1) + \" is done!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"Task to unmark cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" Task task \u003d tasks.get(taskNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" task.updateTaskStatus(false, \"Task \" + (taskNumber + 1) + \" is still incomplete.\", \"Okay, i\u0027ve updated Task \" + (taskNumber + 1) + \" to be incomplete.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":70,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (userInput.length() \u003c\u003d 7 || individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"Task to be deleted cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"WinSheng1"},"content":" try {","lastModifiedDate":"2023-08-26"},{"lineNumber":76,"author":{"gitId":"WinSheng1"},"content":" int taskNumber \u003d Integer.parseInt(userInput.substring(7)) - 1;","lastModifiedDate":"2023-08-26"},{"lineNumber":77,"author":{"gitId":"WinSheng1"},"content":" Task deletedTask \u003d tasks.remove(taskNumber);","lastModifiedDate":"2023-08-26"},{"lineNumber":78,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"This task has been removed\\n \" + deletedTask + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":79,"author":{"gitId":"WinSheng1"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" System.out.println(\"Invalid task number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"The description of a todo cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String description \u003d userInput.substring(5).trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new ToDo(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":89,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":90,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"The description/ deadline of a deadline cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(9);","lastModifiedDate":"2023-08-25"},{"lineNumber":98,"author":{"gitId":"WinSheng1"},"content":" String[] parts \u003d fullStr.split(\"/by\");","lastModifiedDate":"2023-08-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" String description \u003d parts[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String by \u003d parts[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-25"},{"lineNumber":102,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":103,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ by.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"-"},"content":" } else if (lowerCapsFirstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (individualWords.length \u003c\u003d 1) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"The description/ time of an event cannot be empty!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":113,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"WinSheng1"},"content":" String fullStr \u003d userInput.substring(6);","lastModifiedDate":"2023-08-25"},{"lineNumber":115,"author":{"gitId":"WinSheng1"},"content":" String[] partialStr \u003d fullStr.split(\"/from\");","lastModifiedDate":"2023-08-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" String description \u003d partialStr[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"WinSheng1"},"content":" String[] toFrom \u003d partialStr[1].split(\"/to\");","lastModifiedDate":"2023-08-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" String from \u003d toFrom[0].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String to \u003d toFrom[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":120,"author":{"gitId":"WinSheng1"},"content":" Task task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-25"},{"lineNumber":121,"author":{"gitId":"WinSheng1"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-25"},{"lineNumber":122,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"I\u0027ve added this task:\\n \" + task + \"\\nYou have a total of \" + tasks.size() + (tasks.size() \u003d\u003d 1 ? \" task.\\n\" : \" tasks.\\n\") + horizontalLine);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"-"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new MissingInputException(\"You are missing one or some of these inputs - description/ from/ to.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"WinSheng1"},"content":" } else {","lastModifiedDate":"2023-08-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new InvalidCommandException();","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" } catch (MissingInputException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"-"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"-"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"-"},"content":" e.print();","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":135,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":136,"author":{"gitId":"-"},"content":" } while (true);","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"-"},"content":" save(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"-"},"content":" System.out.println(\"Error saving tasks.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":143,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":144,"author":{"gitId":"WinSheng1"},"content":" System.out.println(\"Goodbye. Catch you later!\" + \"\\n\" + horizontalLine);","lastModifiedDate":"2023-08-25"},{"lineNumber":145,"author":{"gitId":"WinSheng1"},"content":" scanner.close();","lastModifiedDate":"2023-08-25"},{"lineNumber":146,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private static void save(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":149,"author":{"gitId":"-"},"content":" FileWriter writer \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":152,"author":{"gitId":"-"},"content":" String taskFileString \u003d task.toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":153,"author":{"gitId":"-"},"content":" writer.write(taskFileString + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":156,"author":{"gitId":"-"},"content":" writer.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":159,"author":{"gitId":"-"},"content":" private static ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-28"},{"lineNumber":160,"author":{"gitId":"-"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":161,"author":{"gitId":"-"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (!file.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":164,"author":{"gitId":"-"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":165,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":166,"author":{"gitId":"-"},"content":" FileReader reader \u003d new FileReader(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":167,"author":{"gitId":"-"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(reader);","lastModifiedDate":"2023-08-28"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String fileLine;","lastModifiedDate":"2023-08-28"},{"lineNumber":170,"author":{"gitId":"-"},"content":" while ((fileLine \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":171,"author":{"gitId":"-"},"content":" Task task \u003d createTaskFromFile(fileLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"-"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"-"},"content":" bufferedReader.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"-"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":181,"author":{"gitId":"-"},"content":" private static Task createTaskFromFile(String fileLine) {","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"-"},"content":" String[] parts \u003d fileLine.split(\"\\\\|\");","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c parts.length; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"-"},"content":" parts[i] \u003d parts[i].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String type \u003d parts[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"-"},"content":" String description \u003d parts[2];","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"-"},"content":" Task task;","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (type.equals(\"[T]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"-"},"content":" task \u003d new ToDo(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"-"},"content":" } else if (type.equals(\"[D]\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"-"},"content":" String by \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"-"},"content":" task \u003d new Deadline(description, by);","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"-"},"content":" String from \u003d parts[3];","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"-"},"content":" String to \u003d parts[4];","lastModifiedDate":"2023-08-28"},{"lineNumber":199,"author":{"gitId":"-"},"content":" task \u003d new Event(description, from, to);","lastModifiedDate":"2023-08-28"},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":202,"author":{"gitId":"-"},"content":" task.isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2023-08-28"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return task;","lastModifiedDate":"2023-08-28"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"WinSheng1":71,"-":134}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected String from;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" protected String to;","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":11,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":" return \"[E]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return type() + super.toString() + \" (from: \" + from + \" to \" + to + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" + from + \" | \" + to;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":26,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":15,"-":11}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":" protected String description;","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"WinSheng1"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-25"},{"lineNumber":8,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":9,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public abstract String type();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public abstract String toFileString();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"WinSheng1"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-25"},{"lineNumber":15,"author":{"gitId":"WinSheng1"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-25"},{"lineNumber":16,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":17,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":18,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":19,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void updateTaskStatus(boolean expectedStatus, String doneMessage, String undoneMessage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"-"},"content":" if (isDone \u003d\u003d expectedStatus) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"-"},"content":" System.out.println(doneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"-"},"content":" isDone \u003d expectedStatus;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"-"},"content":" System.out.println(undoneMessage + \"\\n\" + Duke.horizontalLine);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":17,"-":14}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-25"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-25"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":" super(description);","lastModifiedDate":"2023-08-25"},{"lineNumber":5,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":6,"author":{"gitId":"WinSheng1"},"content":"","lastModifiedDate":"2023-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"-"},"content":" public String type() {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"-"},"content":" return \"[T]\";","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"WinSheng1"},"content":" @Override","lastModifiedDate":"2023-08-25"},{"lineNumber":13,"author":{"gitId":"WinSheng1"},"content":" public String toString() {","lastModifiedDate":"2023-08-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" return type() + super.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public String toFileString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" return type() + \" | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"WinSheng1"},"content":" }","lastModifiedDate":"2023-08-25"},{"lineNumber":21,"author":{"gitId":"WinSheng1"},"content":"}","lastModifiedDate":"2023-08-25"}],"authorContributionMap":{"WinSheng1":10,"-":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"WinSheng1"},"content":"todo borrow book","lastModifiedDate":"2023-08-26"},{"lineNumber":2,"author":{"gitId":"WinSheng1"},"content":"list","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"WinSheng1"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"WinSheng1"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-26"}],"authorContributionMap":{"WinSheng1":4}}] diff --git a/WinSheng1_ip_master/commits.json b/WinSheng1_ip_master/commits.json index 86729363..8a2cfdbe 100644 --- a/WinSheng1_ip_master/commits.json +++ b/WinSheng1_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"WinSheng1":[{"date":"2023-08-23","commitResults":[{"hash":"fc84eaaa609f3ecdceb2f3eca7ab923506788849","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"ac583b6c351bf71ba737c2bdf3fe97147835faeb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"04b37b60e5a5439ee669e476637ad05cc56a2937","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"e6b789bce8b3a89b02c391d297e91717c75428be","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"a0c1405ce7f808d8fca1270fc3fee1e824236294","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}},{"hash":"bffe50c41a94c2dce116001b24e6d0c57b662200","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"b2e78aff3ce5018f810ae704e16810ce1fc75208","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"e355cdc4b600a6781ccac41adc07c2220eabffaa","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f4f76d6328e195508133446b8491d7bad13a666f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":37}}},{"hash":"3747a2474b4538855064502209e6ffa6d8a2feed","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"WinSheng1":{"java":184,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"WinSheng1":5689.111},"authorDisplayNameMap":{"WinSheng1":"CS2103T-W15-3 LIM ..HENG"}} +{"authorDailyContributionsMap":{"WinSheng1":[{"date":"2023-08-23","commitResults":[{"hash":"fc84eaaa609f3ecdceb2f3eca7ab923506788849","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}}]},{"date":"2023-08-25","commitResults":[{"hash":"ac583b6c351bf71ba737c2bdf3fe97147835faeb","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"04b37b60e5a5439ee669e476637ad05cc56a2937","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"e6b789bce8b3a89b02c391d297e91717c75428be","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"a0c1405ce7f808d8fca1270fc3fee1e824236294","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":30}}},{"hash":"bffe50c41a94c2dce116001b24e6d0c57b662200","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}}]},{"date":"2023-08-26","commitResults":[{"hash":"b2e78aff3ce5018f810ae704e16810ce1fc75208","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":3,"deletions":3}}},{"hash":"e355cdc4b600a6781ccac41adc07c2220eabffaa","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f4f76d6328e195508133446b8491d7bad13a666f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":37}}},{"hash":"3747a2474b4538855064502209e6ffa6d8a2feed","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"WinSheng1":{"java":126,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":4}},"authorContributionVariance":{"WinSheng1":5689.111},"authorDisplayNameMap":{"WinSheng1":"CS2103T-W15-3 LIM ..HENG"}} diff --git a/archive.zip b/archive.zip index ce8c0a3b..ffe830ab 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/euchangxian_ip_master/authorship.json b/euchangxian_ip_master/authorship.json index fe51488c..0d1d9e01 100644 --- a/euchangxian_ip_master/authorship.json +++ b/euchangxian_ip_master/authorship.json @@ -1 +1 @@ -[] +[{"path":"src/main/java/CliParserService.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"import exception.TaskParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":"public class CliParserService {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":" private final Duke dukeBot;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" private final OutputService outputService;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" private final TaskFactory taskFactory;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" public CliParserService(Duke dukeBot) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":" this.dukeBot \u003d dukeBot;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":" this.outputService \u003d new OutputService();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"euchangxian"},"content":" this.taskFactory \u003d new TaskFactory();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"euchangxian"},"content":" public void parse() {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"euchangxian"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"euchangxian"},"content":" while (true) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"euchangxian"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"euchangxian"},"content":" String[] input \u003d line.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"euchangxian"},"content":" String command \u003d input[0].toLowerCase();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"euchangxian"},"content":" switch (command) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"euchangxian"},"content":" case \"bye\":","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"euchangxian"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"euchangxian"},"content":" case \"list\":","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"euchangxian"},"content":" outputService.printTasks(dukeBot.getTaskList());","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"euchangxian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"euchangxian"},"content":" case \"mark\":","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"euchangxian"},"content":" if (input.length \u003e 1 \u0026\u0026 isNumeric(input[1])) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"euchangxian"},"content":" int taskNumber \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"euchangxian"},"content":" dukeBot.markTask(taskNumber - 1); // task numbers start from 1","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"euchangxian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"euchangxian"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"euchangxian"},"content":" if (input.length \u003e 1 \u0026\u0026 isNumeric(input[1])) {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"euchangxian"},"content":" int taskNumber \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"euchangxian"},"content":" dukeBot.unmarkTask(taskNumber - 1); // task numbers start from 1","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"euchangxian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"euchangxian"},"content":" case \"delete\":","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"euchangxian"},"content":" if (input.length \u003e 1 \u0026\u0026 isNumeric(input[1])) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"euchangxian"},"content":" int taskNumber \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"euchangxian"},"content":" dukeBot.deleteTask(taskNumber - 1); // task numbers start from 1","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"euchangxian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"euchangxian"},"content":" case \"todo\":","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"euchangxian"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"euchangxian"},"content":" case \"event\":","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"euchangxian"},"content":" parseTaskCommand(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"euchangxian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"euchangxian"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\":\u003c Command: %s not recognised!\", input[0]));","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"euchangxian"},"content":" private void parseTaskCommand(String line) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"euchangxian"},"content":" String[] parsedInput \u003d line.split(\"/\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"euchangxian"},"content":" String[] temp \u003d parsedInput[0].split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"euchangxian"},"content":" String taskType \u003d temp[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"euchangxian"},"content":" String taskName \u003d String.join(\" \", Arrays.copyOfRange(temp, 1, temp.length));","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"euchangxian"},"content":" String[] taskArgs \u003d Arrays.copyOfRange(parsedInput,1, parsedInput.length);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"euchangxian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"euchangxian"},"content":" Task task \u003d taskFactory.createTask(taskType, taskName, taskArgs);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"euchangxian"},"content":" dukeBot.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"euchangxian"},"content":" List\u003cString\u003e displayText \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"euchangxian"},"content":" displayText.add(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"euchangxian"},"content":" displayText.add(outputService.indentLeft(task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"euchangxian"},"content":" int numberOfTasks \u003d dukeBot.getTaskList().size();","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"euchangxian"},"content":" displayText.add(String.format(\"Now you have %s %s in the list.\",","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"euchangxian"},"content":" numberOfTasks,","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"euchangxian"},"content":" numberOfTasks \u003d\u003d 1 ? \"task\" : \"tasks\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"euchangxian"},"content":" outputService.echo(displayText);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"euchangxian"},"content":" } catch (TaskParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"euchangxian"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"euchangxian"},"content":" // Utility method to check if a string is numeric","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"euchangxian"},"content":" private boolean isNumeric(String str) {","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"euchangxian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"euchangxian"},"content":" Integer.parseInt(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"euchangxian"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"euchangxian"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"euchangxian"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":93}},{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":" private String endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":" public DeadlineTask(String taskName, String endDate) {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" super(taskName, TaskType.DEADLINE);","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" public String getEndDate() {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":" return this.endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":" return String.format(\"%s (by: %s)\", super.toString(), endDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":16}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" private final String botName;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" private final List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" private final OutputService outputService;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" public Duke(String botName) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" this.botName \u003d botName;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" this.outputService \u003d new OutputService();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"euchangxian"},"content":" Duke changooseBot \u003d new Duke(\"Changoose\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"euchangxian"},"content":" CliParserService cliParserService \u003d new CliParserService(changooseBot);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"euchangxian"},"content":" OutputService outputService \u003d new OutputService();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"euchangxian"},"content":" String startMessage \u003d String.format(\"Hello! I\u0027m %s%nWhat can I do for you?\", changooseBot.getBotName());","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"euchangxian"},"content":" String endMessage \u003d \"Bye! Hope to see you again soon!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"euchangxian"},"content":" outputService.echo(startMessage);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"euchangxian"},"content":" cliParserService.parse();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"euchangxian"},"content":" outputService.echo(endMessage);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"euchangxian"},"content":" public String getBotName() {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"euchangxian"},"content":" return this.botName;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"euchangxian"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"euchangxian"},"content":" return this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"euchangxian"},"content":" public boolean deleteTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"euchangxian"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\"Invalid Task Index: %s provided.\", index));","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"euchangxian"},"content":" return false;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"euchangxian"},"content":" Task removedTask \u003d taskList.remove(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"euchangxian"},"content":" List\u003cString\u003e displayText \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"euchangxian"},"content":" displayText.add(\"Noted. I have removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"euchangxian"},"content":" displayText.add(outputService.indentLeft(removedTask.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"euchangxian"},"content":" displayText.add(String.format(\"Now you have %s %s in the list.\",","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"euchangxian"},"content":" taskList.size(),","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"euchangxian"},"content":" taskList.size() \u003d\u003d 1 ? \"task\" : \"tasks\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"euchangxian"},"content":" outputService.echo(displayText);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"euchangxian"},"content":" return true;","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"euchangxian"},"content":" public void markTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"euchangxian"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\"Invalid Task Index: %s provided.\", index));","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"euchangxian"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"euchangxian"},"content":" Task task \u003d taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"euchangxian"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"euchangxian"},"content":" List\u003cString\u003e displayText \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"euchangxian"},"content":" displayText.add(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"euchangxian"},"content":" displayText.add(outputService.indentLeft(task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"euchangxian"},"content":" outputService.echo(displayText);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"euchangxian"},"content":" public void unmarkTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"euchangxian"},"content":" if (index \u003c 0 || index \u003e\u003d taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\"Invalid Task Index: %s provided.\", index));","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"euchangxian"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"euchangxian"},"content":" Task task \u003d taskList.get(index);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"euchangxian"},"content":" task.markAsNotDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"euchangxian"},"content":" List\u003cString\u003e displayText \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"euchangxian"},"content":" displayText.add(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"euchangxian"},"content":" displayText.add(outputService.indentLeft(task.toString()));","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"euchangxian"},"content":" outputService.echo(displayText);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"euchangxian"},"content":" public List\u003cTask\u003e getTaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"euchangxian"},"content":" return this.taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"euchangxian":78,"-":4}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"public class EventTask extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":" private String startDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":" private String endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" public EventTask(String taskName, String startDate, String endDate) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":" super(taskName, TaskType.EVENT);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" return String.format(\"%s (from: %s to: %s)\", super.toString(), startDate, endDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":14}},{"path":"src/main/java/OutputService.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":"public class OutputService {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":" private static final int indentLength \u003d 4;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" public void echo(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" echo(input, \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" public void echo(String input, String prefix) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" echo(List.of(prefix + input));","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":" public void echo(List\u003cString\u003e inputs) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"euchangxian"},"content":" String divider \u003d indentLeft(String.format(\"%80s\", \"\").replace(\" \", \"-\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"euchangxian"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"euchangxian"},"content":" inputs.stream().map(this::indentLeft)","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"euchangxian"},"content":" .forEach(System.out::println);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"euchangxian"},"content":" System.out.println(divider);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"euchangxian"},"content":" public String indentLeft(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"euchangxian"},"content":" String indent \u003d String.format(\"%\" + indentLength + \"s\", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"euchangxian"},"content":" String[] lines \u003d input.split(System.lineSeparator()); // handle Unix and Windows new lines.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"euchangxian"},"content":" for (int i \u003d 0; i \u003c lines.length; i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"euchangxian"},"content":" lines[i] \u003d indent + lines[i];","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"euchangxian"},"content":" return String.join(System.lineSeparator(), lines);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"euchangxian"},"content":" public void printTasks(List\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"euchangxian"},"content":" List\u003cString\u003e tasksWithNumber \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"euchangxian"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i ++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"euchangxian"},"content":" String taskNumber \u003d String.format(\"%s. \", i + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"euchangxian"},"content":" tasksWithNumber.add(taskNumber + taskList.get(i));","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"euchangxian"},"content":" echo(tasksWithNumber);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":40}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"public class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":" private String taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":" private TaskType taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" public Task(String taskName, TaskType taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" return this.taskName;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"euchangxian"},"content":" public boolean isDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"euchangxian"},"content":" return this.isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"euchangxian"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"euchangxian"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"euchangxian"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"euchangxian"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"euchangxian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"euchangxian"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"euchangxian"},"content":" String taskStatus \u003d isDone","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"euchangxian"},"content":" ? \"[X]\"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"euchangxian"},"content":" : \"[ ]\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"euchangxian"},"content":" return String.format(\"[%s]%s %s\", taskType.getTaskType(), taskStatus, taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":35}},{"path":"src/main/java/TaskFactory.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"import exception.TaskParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"public class TaskFactory {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" private final OutputService outputService;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" public TaskFactory() {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" this.outputService \u003d new OutputService();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":" public Task createTask(String taskType, String taskName, String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" if (taskName.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" outputService.echo(\"usage: TaskType(todo | deadline | event) \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" \"TaskName \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":" \"[/StartDate] [/EndDate]\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"euchangxian"},"content":" throw new TaskParseException(\"Task Name must be provided\");","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"euchangxian"},"content":" // Safe to get the TaskType enum without checking for errors, because the only way for","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"euchangxian"},"content":" // createTask to be called is when todo | deadline | event is parsed.","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"euchangxian"},"content":" TaskType typeEnum \u003d TaskType.valueOf(taskType.toUpperCase());","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"euchangxian"},"content":" String startDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"euchangxian"},"content":" String endDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"euchangxian"},"content":" switch (typeEnum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"euchangxian"},"content":" case TODO:","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"euchangxian"},"content":" return new TodoTask(taskName);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"euchangxian"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"euchangxian"},"content":" if (args.length !\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\":\u003c deadline Tasks must have an end date%n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"euchangxian"},"content":" \"usage: deadline taskName /10 May 2023\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"euchangxian"},"content":" throw new TaskParseException(\"Invalid args provided for deadline Task\");","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"euchangxian"},"content":" endDate \u003d args[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"euchangxian"},"content":" return new DeadlineTask(taskName, endDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"euchangxian"},"content":" case EVENT:","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"euchangxian"},"content":" if (args.length !\u003d 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"euchangxian"},"content":" outputService.echo(String.format(\":\u003c event Tasks must have a start and end date%n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"euchangxian"},"content":" \"usage: event taskName /10 May 2023 /20 May 2023\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"euchangxian"},"content":" throw new TaskParseException(\"Invalid args provided for event Task\");","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"euchangxian"},"content":" startDate \u003d args[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"euchangxian"},"content":" endDate \u003d args[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"euchangxian"},"content":" return new EventTask(taskName, startDate, endDate);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"euchangxian"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"euchangxian"},"content":" throw new RuntimeException();","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":47}},{"path":"src/main/java/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":" TODO(\"T\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":" DEADLINE(\"D\"),","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" EVENT(\"E\");","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" private final String taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":" TaskType(String taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"euchangxian"},"content":" public String getTaskType() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"euchangxian"},"content":" return taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":14}},{"path":"src/main/java/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":" public TodoTask(String taskName) {","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":" super(taskName, TaskType.TODO);","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":5}},{"path":"src/main/java/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"public class DukeException extends RuntimeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":7}},{"path":"src/main/java/exception/TaskParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"package exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"public class TaskParseException extends DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":" public TaskParseException(String message) {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":" super(message);","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":7}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"euchangxian"},"content":"todo master rizz","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"euchangxian"},"content":"deadline get baddies /tomorrow","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"euchangxian"},"content":"event club! /today /tomorrow","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"euchangxian"},"content":"mark 1","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"euchangxian"},"content":"mark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"euchangxian"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"euchangxian"},"content":"unmark 2","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"euchangxian"},"content":"list","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"euchangxian"},"content":"bye","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"euchangxian":9}}] diff --git a/euchangxian_ip_master/commits.json b/euchangxian_ip_master/commits.json index 167fcb7b..aa4c3abd 100644 --- a/euchangxian_ip_master/commits.json +++ b/euchangxian_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"euchangxian":[]},"authorFileTypeContributionMap":{"euchangxian":{"java":0,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"euchangxian":0.0},"authorDisplayNameMap":{"euchangxian":"CS2103T-F08-3 EU C..XIAN"}} +{"authorDailyContributionsMap":{"euchangxian":[{"date":"2023-08-24","commitResults":[{"hash":"4b0f9731aad74b8c37317707bed6663e66d6804a","isMergeCommit":false,"messageTitle":"Rename chatbot to Changoose and add dividers","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"4d0555f398fc94ef4cafdac1b894a19d811fa996","isMergeCommit":false,"messageTitle":"Add Duke::startParse and Duke::echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"6cb6190c3033c7b8049fda6559d21d761c90e464","isMergeCommit":false,"messageTitle":"Replace usage of System.out.println with echo()","messageBody":"This reduces repeated code.\n","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}}]},{"date":"2023-08-27","commitResults":[{"hash":"dc4d576002a4e249da34fadffd6c4595be94d52f","isMergeCommit":false,"messageTitle":"Add indentLeft() and indent echo\u0027s output","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":2}}},{"hash":"8fc0b5c0d035d423e02ad71356ee0be829c5a42c","isMergeCommit":false,"messageTitle":"Add botName and scanner as Duke instance variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"19b3d6d84d9af91aad528e641f804f01c7937ca8","isMergeCommit":false,"messageTitle":"Add getter for Duke botName","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"8a29887e4ca8a9fd585b46198a817ab6074f3438","isMergeCommit":false,"messageTitle":"Change startParse() and echo() to instance methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"81011597647b91ce06acd3448ceb5f4f0f0b6c6e","isMergeCommit":false,"messageTitle":"Add taskList field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"6acaa3f495a41c0f954c3b382167dd34fd66380c","isMergeCommit":false,"messageTitle":"Update startParse() to add input into taskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"a7c17e381404706a77aac66cfa08bc3d4c640ed5","isMergeCommit":false,"messageTitle":"Update echo() output text","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"d85ffb31afd0c864c832683348b1ecf709052394","isMergeCommit":false,"messageTitle":"Update echo() to take in a prefix","messageBody":"This is done by adding an overloaded echo() method to maintain the\nfunctionality of existing code.\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}},{"hash":"7647a568427a1ce5d5f6229e8e7a05c9ed3ffe1e","isMergeCommit":false,"messageTitle":"Add printTasks() method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"5122a407c617d2459c54b8a82c0d35b58bf6ad75","isMergeCommit":false,"messageTitle":"Add line breaks in between methods","messageBody":"For improved readablity\n","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"4e7bd855eb372ec353fa52e42e2ea201e0ca5358","isMergeCommit":false,"messageTitle":"Update echo() to handle a list of strings","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"da290a212e55d6e0997e304d7c7ced4d9f3b824d","isMergeCommit":false,"messageTitle":"Fix printing of dividers between every task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"87fd0f161d15ae170efdf232d057bfc45e55336c","isMergeCommit":false,"messageTitle":"Add switch case to handle list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"2071d570f150460fd2ecd66a3b20369aa8eec4d7","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"d60dcc2146d15835f9b156dbdb80394c77f0f409","isMergeCommit":false,"messageTitle":"Update fields and methods to use Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"82ce6a119c2d1273e8721e41d64e13a042d054a9","isMergeCommit":false,"messageTitle":"Remove useless scanner field","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"a882d8980f8d5a80bbf1d07e2b09c4377476f726","isMergeCommit":false,"messageTitle":"Add markTask() and unmarkTask()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":1}}},{"hash":"c78a6b4bc6de05d0d2a9d3ecfc465f47c0f799be","isMergeCommit":false,"messageTitle":"Add cases for mark and unmark","messageBody":"Update startParse() to first split by spaces to handle commands with\nmultiple words, like mark x or unmark x, where x is the index of the\ncommand.\n","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":1}}},{"hash":"6804017b079a9ef35a754250868bf3901eec115b","isMergeCommit":false,"messageTitle":"Add getters for taskName and isDone in Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"28ee5f59a77fe46c097cb63ebe824a9c4644ef59","isMergeCommit":false,"messageTitle":"Extract print methods to OutputService","messageBody":"This is to prevent Duke class from getting too bloated.\n","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":47}}},{"hash":"814e1e1357bab6c1437784393ee82d50268a9523","isMergeCommit":false,"messageTitle":"Remove Duke field in OutputService","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":11}}},{"hash":"4623a32b7630542fb3797aff0a4303e5e80010bc","isMergeCommit":false,"messageTitle":"Change entry point of program to CliParserService","messageBody":"This is to prevent bloating of Duke class\n","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":56}}},{"hash":"cc457e32b0fe6c606a5e8b26ea51750e27a2b85c","isMergeCommit":false,"messageTitle":"Add custom Exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"612ae9a9afb48bae59c0f0ae487a179301a853c9","isMergeCommit":false,"messageTitle":"Add TaskType enum","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"7a2e15b7f80c3550d91ad3ecc9829aef7b1e4ecb","isMergeCommit":false,"messageTitle":"Add variants of Tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":2}}},{"hash":"c4bd9225cbe9f91ac5a92a2dfd293b054affa8cc","isMergeCommit":false,"messageTitle":"Add cases for variants of Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":11}}},{"hash":"98972ec1fc9c95a504c1bc7c3da59aeabfdd268d","isMergeCommit":false,"messageTitle":"Move main method back to Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":12}}},{"hash":"54dba6856c7d4316a0dc345a5a0f2e4e93789375","isMergeCommit":false,"messageTitle":"Update text-ui-test test case","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}},{"hash":"d3d7e5dc40fd24f5b43a62c73513d35b7c18040b","isMergeCommit":false,"messageTitle":"Personalize error messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"01e88b34c8ebd42ba453e3ec8371b2069e98006e","isMergeCommit":false,"messageTitle":"Add delete functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"euchangxian":{"java":356,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"euchangxian":39483.45},"authorDisplayNameMap":{"euchangxian":"CS2103T-F08-3 EU C..XIAN"}} diff --git a/jack1e0_ip_master/authorship.json b/jack1e0_ip_master/authorship.json index ac215d0a..4509373a 100644 --- a/jack1e0_ip_master/authorship.json +++ b/jack1e0_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"# Bob project template","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":"3. After that, locate the `src/main/java/Bob.java` file, right-click it, and choose `Run Bob.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jack1e0":2,"-":22}},{"path":"data/bob.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"todo | 1 | read","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"todo | 0 | hih","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"todo | 0 | g out","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":3}},{"path":"src/main/java/bob/Bob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.util.*;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.command.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Bob {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" public Bob(String dataPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" storage \u003d new Storage(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" String nextLine \u003d sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" if (nextLine.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" throw new NoSuchElementException();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" Command c \u003d Parser.parse(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" isExit \u003d c.isExit;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Write something!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" new Bob(\"./data/bob.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jack1e0":42,"-":2}},{"path":"src/main/java/bob/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.command.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" * Handles user input and convert them into the right command.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public static Command parse(String nextLine) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" if (nextLine.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" return new DisplayCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.contains(\"mark\")) { // if command is to mark or unmark","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" return new MarkCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.contains(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" return new DeleteCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" } else { // if command is to add tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" return new AddCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":21}},{"path":"src/main/java/bob/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"import bob.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" * Handles loading tasks from, and saving tasks to file","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" private String dataPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" public Storage(String dataPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" this.dataPath \u003d dataPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * If bob.txt exists, read data from it. If data is not in correct form, delete file and create empty file.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * If bob.txt does not exist, create empty file.","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @throws IOException","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" File file \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" if (file.createNewFile()) { // if file do not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" // do nothing, as a new file is created. list remains empty","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" // read from file","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" lst.add(Task.parse(sc.nextLine()));","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) { // file corrupted","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" file.delete();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" return lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" * Writes a new line to bob.txt for each Task in lst.","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" * Called whenever an operation that alters lst is implemented.","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" * @throws IOException","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" public void write(ArrayList\u003cTask\u003e lst) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" FileWriter fw \u003d new FileWriter(dataPath, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" String lstString \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" for (Task tsk : lst) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" lstString +\u003d tsk.toTxt() + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" fw.write(lstString);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":58}},{"path":"src/main/java/bob/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" * Contains list of tasks, and operations that alter it.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public ArrayList\u003cTask\u003e lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" public TaskList(ArrayList\u003cTask\u003e lst) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" this.lst \u003d lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * Generates the appropriate type of Task based on user input","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * Throws exceptions due to incorrect user input","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @param description is of the form e.g. \"event read /from 2pm /to 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" * @return the relevant Task","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" * @throws WrongInputException for unrecognised input.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" * @throws MissingTaskException when task name is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" * @throws MissingDeadlineException when duedate of Deadline is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" * @throws MissingEventDatesException when start and end of Event is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" public Task generateTask(String description)","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" throws WrongInputException, MissingTaskException, MissingDeadlineException, MissingEventDatesException {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" // Split by the first \" \" into type, and task details","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" String[] task \u003d description.split(\" \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" TaskType taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" taskType \u003d Enum.valueOf(TaskType.class, task[0]);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" if (task.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" throw new MissingTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" String taskDetails \u003d task[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" if (taskType.equals(TaskType.deadline)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" return new Deadline(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" } else if (taskType.equals(TaskType.event)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" return new Event(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" return new Todo(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":" * Adds a Task to lst. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jack1e0"},"content":" * Handles exceptions that occur due to wrong input/ missing requirements","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jack1e0"},"content":" * @param description is of the form e.g. \"event read /from 2pm /to 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"jack1e0"},"content":" * @return message for adding a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"jack1e0"},"content":" public String[] addToList(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"jack1e0"},"content":" Task taskObj \u003d generateTask(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"jack1e0"},"content":" lst.add(taskObj);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"jack1e0"},"content":" return new String[]{\"New task added: \", \"\\t\" + taskObj.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"jack1e0"},"content":" \"You now have \" + lst.size() + (lst.size() \u003d\u003d 1 ? \" task!\" : \" tasks!\")};","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"jack1e0"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"jack1e0"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"jack1e0"},"content":" } catch (MissingDeadlineException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"jack1e0"},"content":" } catch (MissingEventDatesException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"jack1e0"},"content":" * Prints out the Tasks on lst.","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"jack1e0"},"content":" * @return display of lst","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"jack1e0"},"content":" public String[] displayList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"jack1e0"},"content":" String[] tasks \u003d new String[lst.size() + 1];","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"jack1e0"},"content":" if (lst.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"jack1e0"},"content":" tasks[0] \u003d \"You currently have no tasks.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"jack1e0"},"content":" tasks[0] \u003d \"Here are your tasks!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"jack1e0"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"jack1e0"},"content":" tasks[i + 1] \u003d (i + 1) + \". \" + lst.get(i).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"jack1e0"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"jack1e0"},"content":" * Marks Task as done or undone at a specified index. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"jack1e0"},"content":" * @param index of Task to be marked","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"jack1e0"},"content":" * @param doneOrNot states whether the Task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"jack1e0"},"content":" * @return message for marking a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"jack1e0"},"content":" public String[] markDoneOrNot(int index, boolean doneOrNot) {","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"jack1e0"},"content":" lst.get(index - 1).SetDoneOrNot(doneOrNot);","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"jack1e0"},"content":" String statement \u003d doneOrNot ? \"Nice! You completed a task!\" : \"... This is now undone.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"jack1e0"},"content":" return new String[]{statement, \"\\t\" + lst.get(index - 1).toString()};","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"jack1e0"},"content":" * Deletes Task at specified index from list. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"jack1e0"},"content":" * @param index of Task to be deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"jack1e0"},"content":" * @return message for deleting a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"jack1e0"},"content":" public String[] deleteTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"jack1e0"},"content":" String taskStr \u003d lst.get(index - 1).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"jack1e0"},"content":" lst.remove(index - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"jack1e0"},"content":" return new String[]{\"I\u0027ve removed this task from list: \", \"\\t\" + taskStr,","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"jack1e0"},"content":" \"You now have \" + lst.size() + (lst.size() \u003d\u003d 1 ? \" task!\" : \" tasks!\")};","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":119}},{"path":"src/main/java/bob/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" * Handles user interaction","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" * Formats string into nice display","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" * @param strArray contains strings to be displayed on different lines","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" * @return formatted string","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void stringFormat(String[] strArray) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" for (String s : strArray) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" content +\u003d \"\\t \" + s + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" String display \u003d \"\\t_______________________________________________\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" + content","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" + \"\\t_______________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" System.out.println(display);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"Hi there! I\u0027m Bob\", \"How can I help?\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" public void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"See you soon!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" public void echo(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{input});","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"Unable to load tasks. New list created!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":38}},{"path":"src/main/java/bob/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" public AddCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.addToList(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":19}},{"path":"src/main/java/bob/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" * Handles the execution of different types of commands.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public String input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public boolean isExit;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":13}},{"path":"src/main/java/bob/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" String[] deleteIndex \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" if (deleteIndex.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" index \u003d Integer.parseInt(deleteIndex[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.deleteTask(index));","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{e.message});","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Index provided is wrong!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":34}},{"path":"src/main/java/bob/command/DisplayCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"public class DisplayCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" public DisplayCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.displayList());","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":12}},{"path":"src/main/java/bob/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" ui.exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":12}},{"path":"src/main/java/bob/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" String[] markIndex \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" if (markIndex.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" index \u003d Integer.parseInt(markIndex[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" boolean doneOrNot \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" if (input.contains(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" doneOrNot \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.markDoneOrNot(index, doneOrNot));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{e.message});","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Index provided is wrong!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":38}},{"path":"src/main/java/bob/exception/BobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class BobException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Error.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":6}},{"path":"src/main/java/bob/exception/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingDeadlineException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"A due date must be given for deadlines!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingEventDatesException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingEventDatesException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Start and end times must be provided for events!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingIndexException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Task index must be provided!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingTaskException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Task description is missing!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class WrongInputException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Oh no, I don\u0027t understand that...\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public Deadline(String description) throws MissingDeadlineException {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" super(description.split(\" /by \")[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" this.due \u003d LocalDate.parse(description.split(\" /by \")[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" public Deadline(String name, boolean done, String due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" this.due \u003d LocalDate.parse(due);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" return \"[D]\" + done + \" \" + this.name","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" * Parses string into a Deadline object","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book | 2pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" * @return Deadline object","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" public static Deadline parseDeadline(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" String due \u003d strSplit[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" return new Deadline(name, isDone, due);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" return \"deadline\" + separation + (done ? 1 : 0) + separation","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" + super.name + separation + due;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":52}},{"path":"src/main/java/bob/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private LocalDate start;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" private LocalDate end;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public Event(String description) throws MissingEventDatesException {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" super(description.split(\" /from \")[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.start \u003d LocalDate.parse(description.split(\" /from \")[1].split(\" /to \")[0]);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" this.end \u003d LocalDate.parse(description.split(\" /from \")[1].split(\" /to \")[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingEventDatesException();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" public Event(String name, boolean done, String start, String end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" return \"[E]\" + done + \" \" + this.name","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" + \" (from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" * Parses string into an Event object","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book | 2pm | 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" * @return Event object","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" public static Event parseEvent(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" String start \u003d strSplit[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" String end \u003d strSplit[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" return new Event(name, isDone, start, end);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" return \"event\" + separation + (done ? 1 : 0) + separation","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":" + super.name + separation + start + separation + end;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":56}},{"path":"src/main/java/bob/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" protected String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" protected boolean done;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" protected Task(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void SetDoneOrNot(boolean doneOrNot) {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.done \u003d doneOrNot;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" * Parses Task from string to Task object","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" * @param description is in the form e.g. \"event | 0 | read book | 2pm | 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" * @return Task object","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, indicates corrupt file.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" public static Task parse(String description) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" String[] split \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" String type \u003d split[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" String details \u003d split[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" switch (Enum.valueOf(TaskType.class, type)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" case todo:","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" return Todo.parseTodo(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" case event:","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" return Event.parseEvent(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" case deadline:","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" return Deadline.parseDeadline(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" return \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":43}},{"path":"src/main/java/bob/task/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" todo, event, deadline","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public Todo(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" return \"[T]\" + done + \" \" + this.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * Parses string into a Todo object","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book\"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @return Todo object","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" public static Todo parseTodo(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" return new Todo(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" return \"todo\" + separation + (done ? 1 : 0) + separation + name;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"todo read book","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"event study /from 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"deadline submit /by 12 Aug","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"mark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"unmark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"java -classpath ..\\bin Bob \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jack1e0":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"# Bob project template","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":"3. After that, locate the `src/main/java/Bob.java` file, right-click it, and choose `Run Bob.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jack1e0":2,"-":22}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" mainClass.set(\"bob.Bob\")","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jack1e0":1,"-":41}},{"path":"data/bob.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"todo | 1 | read","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"todo | 0 | hih","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"todo | 0 | g out","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":3}},{"path":"src/main/java/bob/Bob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.util.*;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.command.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Bob {","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" public Bob(String dataPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" storage \u003d new Storage(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" String nextLine \u003d sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" if (nextLine.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" throw new NoSuchElementException();","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" Command c \u003d Parser.parse(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" isExit \u003d c.isExit;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Write something!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" new Bob(\"./data/bob.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jack1e0":42,"-":2}},{"path":"src/main/java/bob/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.command.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" * Handles user input and convert them into the right command.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public static Command parse(String nextLine) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" if (nextLine.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" return new DisplayCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.contains(\"mark\")) { // if command is to mark or unmark","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" return new MarkCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.contains(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" return new DeleteCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } else if (nextLine.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" return new ExitCommand();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" } else { // if command is to add tasks","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" return new AddCommand(nextLine);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":21}},{"path":"src/main/java/bob/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"import bob.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" * Handles loading tasks from, and saving tasks to file","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" private String dataPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" public Storage(String dataPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" this.dataPath \u003d dataPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * If bob.txt exists, read data from it. If data is not in correct form, delete file and create empty file.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * If bob.txt does not exist, create empty file.","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @throws IOException","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" public ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" File file \u003d new File(dataPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" ArrayList\u003cTask\u003e lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" if (file.createNewFile()) { // if file do not exist","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" // do nothing, as a new file is created. list remains empty","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" // read from file","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" lst.add(Task.parse(sc.nextLine()));","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) { // file corrupted","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" file.delete();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" return lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" * Writes a new line to bob.txt for each Task in lst.","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" * Called whenever an operation that alters lst is implemented.","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" * @throws IOException","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" public void write(ArrayList\u003cTask\u003e lst) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" FileWriter fw \u003d new FileWriter(dataPath, false);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" String lstString \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" for (Task tsk : lst) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" lstString +\u003d tsk.toTxt() + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" fw.write(lstString);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":58}},{"path":"src/main/java/bob/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" * Contains list of tasks, and operations that alter it.","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public ArrayList\u003cTask\u003e lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.lst \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" public TaskList(ArrayList\u003cTask\u003e lst) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" this.lst \u003d lst;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * Generates the appropriate type of Task based on user input","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * Throws exceptions due to incorrect user input","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @param description is of the form e.g. \"event read /from 2pm /to 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" * @return the relevant Task","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" * @throws WrongInputException for unrecognised input.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" * @throws MissingTaskException when task name is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" * @throws MissingDeadlineException when duedate of Deadline is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" * @throws MissingEventDatesException when start and end of Event is missing.","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" public Task generateTask(String description)","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" throws WrongInputException, MissingTaskException, MissingDeadlineException, MissingEventDatesException {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" // Split by the first \" \" into type, and task details","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" String[] task \u003d description.split(\" \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" TaskType taskType;","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" taskType \u003d Enum.valueOf(TaskType.class, task[0]);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" throw new WrongInputException();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" if (task.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" throw new MissingTaskException();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" String taskDetails \u003d task[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" if (taskType.equals(TaskType.deadline)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" return new Deadline(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" } else if (taskType.equals(TaskType.event)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" return new Event(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" return new Todo(taskDetails);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":" * Adds a Task to lst. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jack1e0"},"content":" * Handles exceptions that occur due to wrong input/ missing requirements","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jack1e0"},"content":" * @param description is of the form e.g. \"event read /from 2pm /to 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"jack1e0"},"content":" * @return message for adding a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"jack1e0"},"content":" public String[] addToList(String description) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"jack1e0"},"content":" Task taskObj \u003d generateTask(description);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"jack1e0"},"content":" lst.add(taskObj);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"jack1e0"},"content":" return new String[]{\"New task added: \", \"\\t\" + taskObj.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"jack1e0"},"content":" \"You now have \" + lst.size() + (lst.size() \u003d\u003d 1 ? \" task!\" : \" tasks!\")};","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"jack1e0"},"content":" } catch (WrongInputException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"jack1e0"},"content":" } catch (MissingTaskException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"jack1e0"},"content":" } catch (MissingDeadlineException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"jack1e0"},"content":" } catch (MissingEventDatesException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"jack1e0"},"content":" return new String[]{e.message};","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"jack1e0"},"content":" * Prints out the Tasks on lst.","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"jack1e0"},"content":" * @return display of lst","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"jack1e0"},"content":" public String[] displayList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"jack1e0"},"content":" String[] tasks \u003d new String[lst.size() + 1];","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"jack1e0"},"content":" if (lst.isEmpty()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"jack1e0"},"content":" tasks[0] \u003d \"You currently have no tasks.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"jack1e0"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"jack1e0"},"content":" tasks[0] \u003d \"Here are your tasks!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"jack1e0"},"content":" for (int i \u003d 0; i \u003c lst.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"jack1e0"},"content":" tasks[i + 1] \u003d (i + 1) + \". \" + lst.get(i).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"jack1e0"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"jack1e0"},"content":" * Marks Task as done or undone at a specified index. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"jack1e0"},"content":" * @param index of Task to be marked","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"jack1e0"},"content":" * @param doneOrNot states whether the Task is done or not","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"jack1e0"},"content":" * @return message for marking a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"jack1e0"},"content":" public String[] markDoneOrNot(int index, boolean doneOrNot) {","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"jack1e0"},"content":" lst.get(index - 1).SetDoneOrNot(doneOrNot);","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"jack1e0"},"content":" String statement \u003d doneOrNot ? \"Nice! You completed a task!\" : \"... This is now undone.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"jack1e0"},"content":" return new String[]{statement, \"\\t\" + lst.get(index - 1).toString()};","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"jack1e0"},"content":" * Deletes Task at specified index from list. Writes modified lst to bob.txt.","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"jack1e0"},"content":" * @param index of Task to be deleted","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"jack1e0"},"content":" * @return message for deleting a Task","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"jack1e0"},"content":" public String[] deleteTask(int index) {","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"jack1e0"},"content":" String taskStr \u003d lst.get(index - 1).toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"jack1e0"},"content":" lst.remove(index - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"jack1e0"},"content":" return new String[]{\"I\u0027ve removed this task from list: \", \"\\t\" + taskStr,","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"jack1e0"},"content":" \"You now have \" + lst.size() + (lst.size() \u003d\u003d 1 ? \" task!\" : \" tasks!\")};","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":119}},{"path":"src/main/java/bob/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" * Handles user interaction","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" * Formats string into nice display","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" * @param strArray contains strings to be displayed on different lines","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" * @return formatted string","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void stringFormat(String[] strArray) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" String content \u003d \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" for (String s : strArray) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" content +\u003d \"\\t \" + s + \"\\n\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" String display \u003d \"\\t_______________________________________________\\n\"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" + content","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" + \"\\t_______________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" System.out.println(display);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"Hi there! I\u0027m Bob\", \"How can I help?\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" public void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"See you soon!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" public void echo(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{input});","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" stringFormat(new String[]{\"Unable to load tasks. New list created!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":38}},{"path":"src/main/java/bob/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" public AddCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.addToList(input));","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":19}},{"path":"src/main/java/bob/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" * Handles the execution of different types of commands.","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public String input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public boolean isExit;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":13}},{"path":"src/main/java/bob/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" String[] deleteIndex \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" if (deleteIndex.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" index \u003d Integer.parseInt(deleteIndex[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.deleteTask(index));","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{e.message});","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Index provided is wrong!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":34}},{"path":"src/main/java/bob/command/DisplayCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"public class DisplayCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" public DisplayCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.displayList());","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":12}},{"path":"src/main/java/bob/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" public ExitCommand() {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" ui.exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":12}},{"path":"src/main/java/bob/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.command;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import bob.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" super.input \u003d input;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super.isExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" String[] markIndex \u003d input.split(\" \");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" if (markIndex.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" int index \u003d 0;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" index \u003d Integer.parseInt(markIndex[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" throw new MissingIndexException();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" boolean doneOrNot \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" if (input.contains(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" doneOrNot \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(tasks.markDoneOrNot(index, doneOrNot));","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" storage.write(tasks.lst);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{e.message});","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" ui.stringFormat(new String[]{\"Index provided is wrong!\"});","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":38}},{"path":"src/main/java/bob/exception/BobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class BobException extends Exception {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Error.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":6}},{"path":"src/main/java/bob/exception/MissingDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingDeadlineException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"A due date must be given for deadlines!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingEventDatesException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingEventDatesException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Start and end times must be provided for events!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingIndexException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Task index must be provided!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/MissingTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class MissingTaskException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Task description is missing!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/exception/WrongInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.exception;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class WrongInputException extends BobException {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public String message \u003d \"Oh no, I don\u0027t understand that...\";","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private LocalDate due;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" public Deadline(String description) throws MissingDeadlineException {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" super(description.split(\" /by \")[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" this.due \u003d LocalDate.parse(description.split(\" /by \")[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" throw new MissingDeadlineException();","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" public Deadline(String name, boolean done, String due) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" this.due \u003d LocalDate.parse(due);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" return \"[D]\" + done + \" \" + this.name","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" * Parses string into a Deadline object","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book | 2pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" * @return Deadline object","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" public static Deadline parseDeadline(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 3);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" String due \u003d strSplit[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" return new Deadline(name, isDone, due);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" return \"deadline\" + separation + (done ? 1 : 0) + separation","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":" + super.name + separation + due;","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":52}},{"path":"src/main/java/bob/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"import bob.exception.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" private LocalDate start;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" private LocalDate end;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" public Event(String description) throws MissingEventDatesException {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" super(description.split(\" /from \")[0]);","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" try {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.start \u003d LocalDate.parse(description.split(\" /from \")[1].split(\" /to \")[0]);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" this.end \u003d LocalDate.parse(description.split(\" /from \")[1].split(\" /to \")[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" throw new MissingEventDatesException();","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" public Event(String name, boolean done, String start, String end) {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" return \"[E]\" + done + \" \" + this.name","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" + \" (from: \" + this.start.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" + \" to: \" + this.end.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" * Parses string into an Event object","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book | 2pm | 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":" * @return Event object","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" public static Event parseEvent(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jack1e0"},"content":" String start \u003d strSplit[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jack1e0"},"content":" String end \u003d strSplit[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jack1e0"},"content":" return new Event(name, isDone, start, end);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jack1e0"},"content":" return \"event\" + separation + (done ? 1 : 0) + separation","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jack1e0"},"content":" + super.name + separation + start + separation + end;","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":56}},{"path":"src/main/java/bob/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" protected String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" protected boolean done;","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":" protected Task(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":" public void SetDoneOrNot(boolean doneOrNot) {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" this.done \u003d doneOrNot;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" * Parses Task from string to Task object","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":" * @param description is in the form e.g. \"event | 0 | read book | 2pm | 4pm\"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" * @return Task object","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, indicates corrupt file.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" public static Task parse(String description) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" String[] split \u003d description.split(\" \\\\| \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" String type \u003d split[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" String details \u003d split[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" switch (Enum.valueOf(TaskType.class, type)) {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" case todo:","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" return Todo.parseTodo(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" case event:","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":" return Event.parseEvent(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" case deadline:","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" return Deadline.parseDeadline(details);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jack1e0"},"content":" return \"\";","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":43}},{"path":"src/main/java/bob/task/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public enum TaskType {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" todo, event, deadline","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jack1e0":5}},{"path":"src/main/java/bob/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"package bob.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":" public Todo(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":" public Todo(String name, boolean done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":" super(name);","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":" super.done \u003d done;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"jack1e0"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"jack1e0"},"content":" String done \u003d this.done ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"jack1e0"},"content":" return \"[T]\" + done + \" \" + this.name;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jack1e0"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jack1e0"},"content":" * Parses string into a Todo object","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jack1e0"},"content":" * @param str is in the form e.g. \"0 | read book\"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jack1e0"},"content":" * @return Todo object","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jack1e0"},"content":" * @throws IndexOutOfBoundsException when parsing fails, as string split does not occur correctly.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jack1e0"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jack1e0"},"content":" public static Todo parseTodo(String str) throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jack1e0"},"content":" String[] strSplit \u003d str.split(\" \\\\| \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jack1e0"},"content":" boolean isDone \u003d strSplit[0].equals(\"1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jack1e0"},"content":" String name \u003d strSplit[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jack1e0"},"content":" return new Todo(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jack1e0"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jack1e0"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jack1e0"},"content":" public String toTxt() {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jack1e0"},"content":" String separation \u003d \" | \";","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jack1e0"},"content":" return \"todo\" + separation + (done ? 1 : 0) + separation + name;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jack1e0"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jack1e0"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":37}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"jack1e0"},"content":"todo read book","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"jack1e0"},"content":"event study /from 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"jack1e0"},"content":"deadline submit /by 12 Aug","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"jack1e0"},"content":"mark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"jack1e0"},"content":"unmark 2","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"jack1e0"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"jack1e0"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"jack1e0":10}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"jack1e0"},"content":"java -classpath ..\\bin Bob \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jack1e0":1,"-":20}}] diff --git a/jack1e0_ip_master/commits.json b/jack1e0_ip_master/commits.json index cd06ba12..2358b275 100644 --- a/jack1e0_ip_master/commits.json +++ b/jack1e0_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jack1e0":[{"date":"2023-08-22","commitResults":[{"hash":"28952d148579d33488559a5dca9ab9a44a09066f","isMergeCommit":false,"messageTitle":"incr: level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"837e429e0ad0b1b153c160564d4a5ae00bda6152","isMergeCommit":false,"messageTitle":"incr: level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"494e8c4eda6ebf13493461be04e7c4bd18002d1a","isMergeCommit":false,"messageTitle":"wip","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"f620055f9b69d907922c23178dc2dc07278da09b","isMergeCommit":false,"messageTitle":"incr: level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"e915caa35aef630763b1aea9ce33a56ac43dead1","isMergeCommit":false,"messageTitle":"incr: level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"972571739448ba3208ff7a0f225afd8ee4f2a8f5","isMergeCommit":false,"messageTitle":"incr: level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":19}}},{"hash":"0789b26a2224c5be3dde8e3cce68d650525a4ae8","isMergeCommit":false,"messageTitle":"incr: level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":11}}},{"hash":"871bfc6fba3a0e970415302225f07acecc8f1db4","isMergeCommit":false,"messageTitle":"new incr: level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":46}}},{"hash":"acef6aaa5c7fc02f17543a6b3e3cae59f3228e3d","isMergeCommit":false,"messageTitle":"incr: testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":0,"deletions":6}}},{"hash":"47e756c7a8034d293e843c1c5fb3a27ed5b76ebd","isMergeCommit":false,"messageTitle":"incr: error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":39}}},{"hash":"23e04e8ec0a177d5794fde13d54f7472eb5aca10","isMergeCommit":false,"messageTitle":"incr: level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"62139c0b84d8d88384e380cf80bc5dec3282a8cd","isMergeCommit":false,"messageTitle":"incr: enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"e135ca1950a2e25e55f8ed88e15fc33854256ca3","isMergeCommit":false,"messageTitle":"debug","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"60620b5d9b706c4243c5529233cf607494cc2181","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"e8ab0204ee361f7189ce84e245bd829c3ed84630","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-27","commitResults":[{"hash":"858a024812aaa4c9df3db009f4c3ba4a8cacef05","isMergeCommit":false,"messageTitle":"incr: level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":237,"deletions":39}}},{"hash":"883c945cb80b36bfe06bdf5f8162ef7c4e75da15","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"231b7692eb35155b3980326edb22a178c58b4dc7","isMergeCommit":false,"messageTitle":"incr: level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}},{"hash":"080827c29cbee2d532fca2d9d9df80adc88af7ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a92624ff3274aba0fd275029cf820ec9110d98fd","isMergeCommit":false,"messageTitle":"more oop","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":302,"deletions":243}}},{"hash":"871627ea4e46d1d75afd7c47977999f0af240689","isMergeCommit":false,"messageTitle":"more oop (commands)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":137,"deletions":75}}},{"hash":"3030df58c579ec6e2a6676748450961e997b1767","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ed512c0d53980997ca0024c6f4791f491de742e2","isMergeCommit":false,"messageTitle":"package separation","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":72,"deletions":26}}},{"hash":"aff7882d5a195966251a9cf99e302f15e401be02","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"9d01f98db9e082fd77341126c47bbca224f843f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jack1e0":{"java":630,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":13}},"authorContributionVariance":{"jack1e0":149811.58},"authorDisplayNameMap":{"jack1e0":"CS2103T-W15-1 GUO ..CKIE"}} +{"authorDailyContributionsMap":{"jack1e0":[{"date":"2023-08-22","commitResults":[{"hash":"28952d148579d33488559a5dca9ab9a44a09066f","isMergeCommit":false,"messageTitle":"incr: level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"837e429e0ad0b1b153c160564d4a5ae00bda6152","isMergeCommit":false,"messageTitle":"incr: level 1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"494e8c4eda6ebf13493461be04e7c4bd18002d1a","isMergeCommit":false,"messageTitle":"wip","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"f620055f9b69d907922c23178dc2dc07278da09b","isMergeCommit":false,"messageTitle":"incr: level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"e915caa35aef630763b1aea9ce33a56ac43dead1","isMergeCommit":false,"messageTitle":"incr: level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":3}}},{"hash":"972571739448ba3208ff7a0f225afd8ee4f2a8f5","isMergeCommit":false,"messageTitle":"incr: level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":19}}},{"hash":"0789b26a2224c5be3dde8e3cce68d650525a4ae8","isMergeCommit":false,"messageTitle":"incr: level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":11}}},{"hash":"871bfc6fba3a0e970415302225f07acecc8f1db4","isMergeCommit":false,"messageTitle":"new incr: level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":46}}},{"hash":"acef6aaa5c7fc02f17543a6b3e3cae59f3228e3d","isMergeCommit":false,"messageTitle":"incr: testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":0,"deletions":6}}},{"hash":"47e756c7a8034d293e843c1c5fb3a27ed5b76ebd","isMergeCommit":false,"messageTitle":"incr: error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":39}}},{"hash":"23e04e8ec0a177d5794fde13d54f7472eb5aca10","isMergeCommit":false,"messageTitle":"incr: level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"62139c0b84d8d88384e380cf80bc5dec3282a8cd","isMergeCommit":false,"messageTitle":"incr: enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":7}}},{"hash":"e135ca1950a2e25e55f8ed88e15fc33854256ca3","isMergeCommit":false,"messageTitle":"debug","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2023-08-24","commitResults":[{"hash":"60620b5d9b706c4243c5529233cf607494cc2181","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"e8ab0204ee361f7189ce84e245bd829c3ed84630","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-27","commitResults":[{"hash":"858a024812aaa4c9df3db009f4c3ba4a8cacef05","isMergeCommit":false,"messageTitle":"incr: level 7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":237,"deletions":39}}},{"hash":"883c945cb80b36bfe06bdf5f8162ef7c4e75da15","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"231b7692eb35155b3980326edb22a178c58b4dc7","isMergeCommit":false,"messageTitle":"incr: level 8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}},{"hash":"080827c29cbee2d532fca2d9d9df80adc88af7ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"a92624ff3274aba0fd275029cf820ec9110d98fd","isMergeCommit":false,"messageTitle":"more oop","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":302,"deletions":243}}},{"hash":"871627ea4e46d1d75afd7c47977999f0af240689","isMergeCommit":false,"messageTitle":"more oop (commands)","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":137,"deletions":75}}},{"hash":"3030df58c579ec6e2a6676748450961e997b1767","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"ed512c0d53980997ca0024c6f4791f491de742e2","isMergeCommit":false,"messageTitle":"package separation","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":72,"deletions":26}}},{"hash":"aff7882d5a195966251a9cf99e302f15e401be02","isMergeCommit":false,"messageTitle":"renaming","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":26}}},{"hash":"9d01f98db9e082fd77341126c47bbca224f843f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6d167d2224921c39c037907e1fb839f85beab4de","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2023-08-28","commitResults":[{"hash":"754cbb63e0af981788ea1d501607be46b056f02c","isMergeCommit":false,"messageTitle":"gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"jack1e0":{"java":630,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":13}},"authorContributionVariance":{"jack1e0":138875.98},"authorDisplayNameMap":{"jack1e0":"CS2103T-W15-1 GUO ..CKIE"}} diff --git a/jamesebond_ip_master/commits.json b/jamesebond_ip_master/commits.json index b150c400..33187670 100644 --- a/jamesebond_ip_master/commits.json +++ b/jamesebond_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jamesebond":[{"date":"2023-08-23","commitResults":[{"hash":"bd77ac1e5ccc1b8f18cb4c63e58f262b3d31b534","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"85a7ab4e81382dc1362bb90bf17370ad3392a645","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"c54fed0c2caef493c4099ba51365d17aace5fe01","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":23}}},{"hash":"6e5b5a2e5096b974414384d70ea757b9374d9416","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d507b256f95c8c9a32e72af195ababb952a7a4ef","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":12}}},{"hash":"20bff1fa60eb127affb1a62a1a68a27ed5e065fb","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":134}}},{"hash":"aa4cc604de70eef51085948d3229e64f25e12ac5","isMergeCommit":false,"messageTitle":"level 6 delte","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":8,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"jamesebond":{"java":242,"md":0,"fxml":0,"sh":7,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"jamesebond":26698.285},"authorDisplayNameMap":{"jamesebond":"CS2103T-W10-4 DU K..XUAN"}} +{"authorDailyContributionsMap":{"jamesebond":[{"date":"2023-08-23","commitResults":[{"hash":"bd77ac1e5ccc1b8f18cb4c63e58f262b3d31b534","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"85a7ab4e81382dc1362bb90bf17370ad3392a645","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":8}}},{"hash":"c54fed0c2caef493c4099ba51365d17aace5fe01","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":23}}},{"hash":"6e5b5a2e5096b974414384d70ea757b9374d9416","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":21}}}]},{"date":"2023-08-24","commitResults":[{"hash":"d507b256f95c8c9a32e72af195ababb952a7a4ef","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":112,"deletions":12}}},{"hash":"20bff1fa60eb127affb1a62a1a68a27ed5e065fb","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":155,"deletions":134}}},{"hash":"aa4cc604de70eef51085948d3229e64f25e12ac5","isMergeCommit":false,"messageTitle":"level 6 delte","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":8,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"jamesebond":{"java":242,"md":0,"fxml":0,"sh":7,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"jamesebond":26698.285},"authorDisplayNameMap":{"jamesebond":"CS2103T-W10-4 DU K..XUAN"}} diff --git a/jeffrey-jian_ip_master/authorship.json b/jeffrey-jian_ip_master/authorship.json index 661f6df0..a27a7adb 100644 --- a/jeffrey-jian_ip_master/authorship.json +++ b/jeffrey-jian_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"T|0|join sports club","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"T|1|test","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"D|0|work|2023-08-15T23:59","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"E|0|workshop|2001-08-08T12:00|2001-08-09T12:00","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jeffrey-jian":4}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public Deadline(String name, String by) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" this.by \u003d LocalDateTime.parse(by, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" public Deadline(String name, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" return \"D|\" + super.toDataString() + \"|\" + by;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":31}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" public static final DateTimeFormatter DATETIME_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" public static void talk(String str) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" String line \u003d \"_\".repeat(50);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(str);","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" public static void readData(ArrayList\u003cTask\u003e items) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(\"ip/src/data/duke.txt\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" String line;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" String[] lineArr \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" String taskType \u003d lineArr[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" boolean isDone \u003d Integer.parseInt(lineArr[1]) \u003d\u003d 1 ? true : false;","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" String name \u003d lineArr[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new ToDo(name, isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" String by \u003d lineArr[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Deadline(name, LocalDateTime.parse(by), isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" String from \u003d lineArr[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" String to \u003d lineArr[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Event(name, LocalDateTime.parse(from), LocalDateTime.parse(to), isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jeffrey-jian"},"content":" continue;","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jeffrey-jian"},"content":" reader.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jeffrey-jian"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! I am unable to read your duke.txt data file. Exiting....\");","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jeffrey-jian"},"content":" public static void writeData(ArrayList\u003cTask\u003e items) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jeffrey-jian"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(\"ip/src/data/duke.txt\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jeffrey-jian"},"content":" for (Task t : items) {","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jeffrey-jian"},"content":" writer.write(t.toDataString());","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jeffrey-jian"},"content":" writer.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jeffrey-jian"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"jeffrey-jian"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! I am unable to write to your duke.txt data file. Exiting....\");","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":65,"author":{"gitId":"jeffrey-jian"},"content":" String greeting \u003d \"Hello! I\u0027m JED, your personal chat-bot!\\nWhat can I do for you?\";","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"jeffrey-jian"},"content":" String goodbye \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"jeffrey-jian"},"content":" ArrayList\u003cTask\u003e items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"jeffrey-jian"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"jeffrey-jian"},"content":" // Read data from duke.txt to be pre-populated into items","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"jeffrey-jian"},"content":" readData(items);","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"jeffrey-jian"},"content":" talk(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"jeffrey-jian"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"jeffrey-jian"},"content":" talk(greeting);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"jeffrey-jian"},"content":" while (true) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"jeffrey-jian"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"jeffrey-jian"},"content":" String[] inputArr \u003d input.split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"jeffrey-jian"},"content":" String keyword \u003d inputArr[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"jeffrey-jian"},"content":" if (keyword.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"jeffrey-jian"},"content":" talk(goodbye);","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"jeffrey-jian"},"content":" if (keyword.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"jeffrey-jian"},"content":" String list \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"jeffrey-jian"},"content":" int count \u003d items.size();","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"jeffrey-jian"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Your list is currently empty.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"jeffrey-jian"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"jeffrey-jian"},"content":" list +\u003d \" \" + (i + 1) + \". \" + items.get(i) + \"\\n\";","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"jeffrey-jian"},"content":" talk(list);","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"jeffrey-jian"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"jeffrey-jian"},"content":" String description \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"jeffrey-jian"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"jeffrey-jian"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to mark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"jeffrey-jian"},"content":" int indexMark \u003d Integer.parseInt(description.trim()) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"jeffrey-jian"},"content":" items.get(indexMark).markDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Nice! I\u0027ve marked this task as done:\\n \" + items.get(indexMark));","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"jeffrey-jian"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":117,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to unmark.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"jeffrey-jian"},"content":" int indexUnmark \u003d Integer.parseInt(description.trim()) - 1;","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"jeffrey-jian"},"content":" items.get(indexUnmark).markUnDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"OK, I\u0027ve marked this task as not done yet:\\n \" + items.get(indexUnmark));","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"jeffrey-jian"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new ToDo(description));","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Got it. I\u0027ve added this task:\\n \" + items.get(items.size() - 1) + \"\\n Now you have \"","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"jeffrey-jian"},"content":" + items.size() + \" tasks in your list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":132,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":133,"author":{"gitId":"jeffrey-jian"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":134,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"jeffrey-jian"},"content":" String deadlineName \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"jeffrey-jian"},"content":" String deadlineBy \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"jeffrey-jian"},"content":" String[] deadlineDescription \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"jeffrey-jian"},"content":" for (String str : deadlineDescription) {","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"jeffrey-jian"},"content":" if (str.startsWith(\"by\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"jeffrey-jian"},"content":" deadlineBy \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"jeffrey-jian"},"content":" deadlineName \u003d str.trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"jeffrey-jian"},"content":" if (deadlineName \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include the name of the deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"jeffrey-jian"},"content":" if (deadlineBy \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the deadline is by.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Deadline(deadlineName, deadlineBy));","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Got it. I\u0027ve added this task:\\n \" + items.get(items.size() - 1) + \"\\n Now you have \"","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"jeffrey-jian"},"content":" + items.size() + \" tasks in your list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"jeffrey-jian"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"jeffrey-jian"},"content":" String eventName \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"jeffrey-jian"},"content":" String eventFrom \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"jeffrey-jian"},"content":" String eventTo \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"jeffrey-jian"},"content":" String[] eventDescription \u003d description.split(\"/\");","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"jeffrey-jian"},"content":" for (String str : eventDescription) {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"jeffrey-jian"},"content":" if (str.startsWith(\"from\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"jeffrey-jian"},"content":" eventFrom \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"jeffrey-jian"},"content":" } else if (str.startsWith(\"to\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"jeffrey-jian"},"content":" eventTo \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"jeffrey-jian"},"content":" eventName \u003d str.trim();","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"jeffrey-jian"},"content":" if (eventName \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include the name of the event.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"jeffrey-jian"},"content":" if (eventFrom \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the event is from.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"jeffrey-jian"},"content":" if (eventTo \u003d\u003d \"\") {","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the event is till.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Event(eventName, eventFrom, eventTo));","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Got it. I\u0027ve added this task:\\n \" + items.get(items.size() - 1) + \"\\n Now you have \" + items.size()","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"jeffrey-jian"},"content":" + \" tasks in your list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"jeffrey-jian"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":190,"author":{"gitId":"jeffrey-jian"},"content":" if (inputArr.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":191,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to delete.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":192,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d input.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":194,"author":{"gitId":"jeffrey-jian"},"content":" int indexDelete \u003d Integer.parseInt(description) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":195,"author":{"gitId":"jeffrey-jian"},"content":" Task deleted \u003d items.get(indexDelete);","lastModifiedDate":"2023-08-24"},{"lineNumber":196,"author":{"gitId":"jeffrey-jian"},"content":" items.remove(indexDelete);","lastModifiedDate":"2023-08-24"},{"lineNumber":197,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Noted. I\u0027ve removed this task:\\n \" + deleted + \"\\n Now you have \" + items.size() + \" tasks in your list\");","lastModifiedDate":"2023-08-24"},{"lineNumber":198,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":199,"author":{"gitId":"jeffrey-jian"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"jeffrey-jian"},"content":" writeData(items);","lastModifiedDate":"2023-08-27"},{"lineNumber":203,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"jeffrey-jian"},"content":" talk(e.getMessage());","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"jeffrey-jian":204}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":6}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" public Event(String name, String from, String to) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" this.from \u003d LocalDateTime.parse(from, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.to \u003d LocalDateTime.parse(to, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" return \"E|\" + super.toDataString() + \"|\" + from + \"|\" + to;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":33}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":" private boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" public void markUnDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" String doneCheckbox \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" if (this.done) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" doneCheckbox \u003d \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" doneCheckbox \u003d \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" return doneCheckbox + \" \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" String isDone \u003d \"0\";","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" if (this.done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" isDone \u003d \"1\";","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" return isDone + \"|\" + this.name;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":41}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" public ToDo(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" return \"T|\" + super.toDataString();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"hi","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"deadline complete book review","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"deadline complete book review /by Monday 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"todo extra","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":"event attend book club /from Tuesday 3pm /to Tuesday 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":"mark","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":19}}] +[{"path":"src/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"T|0|join sports club","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"T|1|test","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"D|1|work|2023-08-15T23:59","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"E|1|workshop|2001-08-08T12:00|2001-08-09T12:00","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"T|0|jefftest","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"D|0|jeffdeadline|2001-08-08T23:59","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":6}},{"path":"src/main/java/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" ui.bye();","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.exitsNext \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":8}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" protected boolean exitsNext \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public abstract void execute(TaskList items, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public boolean exitsNext() {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" return exitsNext;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":10}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Deadline extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime by;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public Deadline(String name, String by) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" this.by \u003d LocalDateTime.parse(by, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" public Deadline(String name, LocalDateTime by, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" return \"D|\" + super.toDataString() + \"|\" + by;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":31}},{"path":"src/main/java/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" private String name;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" private LocalDateTime by;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" public DeadlineCommand(String name, LocalDateTime by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.addDeadline(name, by);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" ui.addItem(item.toString(), items.getCount());","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":19}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private int deleteNumber;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public DeleteCommand(int deleteNumber) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.deleteNumber \u003d deleteNumber;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.delete(deleteNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" ui.deleteItem(item.toString(), items.getCount());","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":15}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" public static final DateTimeFormatter DATETIME_INPUT_FORMAT \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" private TaskList items;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" items \u003d new TaskList(storage.load());","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DukeException c) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" ui.showLoadingError();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" items \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" boolean isRunning \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" while (isRunning) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" String fullCommand \u003d ui.getInput();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" c.execute(items, ui, storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" isRunning \u003d !c.exitsNext();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" ui.talk(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" new Duke(\"ip/src/data/duke.txt\").run();","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"jeffrey-jian":42}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" public DukeException() {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" super();","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public DukeException(String errorMsg) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" super(errorMsg);","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" protected LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" public Event(String name, String from, String to) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" super(name);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" this.from \u003d LocalDateTime.parse(from, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.to \u003d LocalDateTime.parse(to, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" public Event(String name, LocalDateTime from, LocalDateTime to, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" return \"E|\" + super.toDataString() + \"|\" + from + \"|\" + to;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":33}},{"path":"src/main/java/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" private String name;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" public EventCommand(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.addEvent(name, from, to);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" ui.addItem(item.toString(), items.getCount());","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":21}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" ui.list(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":7}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private int markIndex;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public MarkCommand(int markIndex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.markIndex \u003d markIndex;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.mark(markIndex);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" ui.markItem(item.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":15}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" public static Command parse(String command) throws DukeException{","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" String[] commandArr \u003d command.split(\" \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" String keyword \u003d commandArr[0];","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" switch (keyword) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" case \"bye\":","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to mark.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" int markNumber \u003d Integer.parseInt(commandArr[1].trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" return new MarkCommand(markNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please indicate a number for the task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to unmark.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" int unmarkNumber \u003d Integer.parseInt(commandArr[1].trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" return new UnmarkCommand(unmarkNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please indicate a number for the task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! Please include the task number you would like to delete.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":" int deleteNumber \u003d Integer.parseInt(commandArr[1].trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"jeffrey-jian"},"content":" return new DeleteCommand(deleteNumber);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please indicate a number for the task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"jeffrey-jian"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d commandArr[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"jeffrey-jian"},"content":" return new ToDoCommand(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"jeffrey-jian"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d commandArr[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"jeffrey-jian"},"content":" String deadlineName \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"jeffrey-jian"},"content":" String deadlineBy \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"jeffrey-jian"},"content":" String[] deadlineDescription \u003d description.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"jeffrey-jian"},"content":" for (String str : deadlineDescription) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"jeffrey-jian"},"content":" if (str.startsWith(\"by\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"jeffrey-jian"},"content":" deadlineBy \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"jeffrey-jian"},"content":" deadlineName \u003d str.trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"jeffrey-jian"},"content":" if (deadlineName \u003d\u003d \"\") {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include the name of the deadline.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"jeffrey-jian"},"content":" if (deadlineBy \u003d\u003d \"\") {","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the deadline is by.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"jeffrey-jian"},"content":" LocalDateTime byParsed \u003d LocalDateTime.parse(deadlineBy, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"jeffrey-jian"},"content":" return new DeadlineCommand(deadlineName, byParsed);","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"jeffrey-jian"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"jeffrey-jian"},"content":" if (commandArr.length \u003c 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"jeffrey-jian"},"content":" description \u003d commandArr[1];","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"jeffrey-jian"},"content":" String eventName \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"jeffrey-jian"},"content":" String eventFrom \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"jeffrey-jian"},"content":" String eventTo \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"jeffrey-jian"},"content":" String[] eventDescription \u003d description.split(\"/\");","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"jeffrey-jian"},"content":" for (String str : eventDescription) {","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"jeffrey-jian"},"content":" if (str.startsWith(\"from\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"jeffrey-jian"},"content":" eventFrom \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"jeffrey-jian"},"content":" } else if (str.startsWith(\"to\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"jeffrey-jian"},"content":" eventTo \u003d str.split(\" \", 2)[1].trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"jeffrey-jian"},"content":" eventName \u003d str.trim();","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"jeffrey-jian"},"content":" if (eventName \u003d\u003d \"\") {","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include the name of the event.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"jeffrey-jian"},"content":" if (eventFrom \u003d\u003d \"\") {","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the event is from.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"jeffrey-jian"},"content":" if (eventTo \u003d\u003d \"\") {","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!! Please include when the event is till.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"jeffrey-jian"},"content":" LocalDateTime fromParsed \u003d LocalDateTime.parse(eventFrom, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"jeffrey-jian"},"content":" LocalDateTime toParsed \u003d LocalDateTime.parse(eventTo, Duke.DATETIME_INPUT_FORMAT);","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"jeffrey-jian"},"content":" return new EventCommand(eventName, fromParsed, toParsed);","lastModifiedDate":"2023-08-28"},{"lineNumber":110,"author":{"gitId":"jeffrey-jian"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":111,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"Wrong DateTime format!! Please use \u0027dd-MM-yyyy HHmm\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":112,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":113,"author":{"gitId":"jeffrey-jian"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":114,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":115,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":116,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":117,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":117}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" ArrayList\u003cTask\u003e items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" String line;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" String[] lineArr \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" String taskType \u003d lineArr[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" boolean isDone \u003d Integer.parseInt(lineArr[1]) \u003d\u003d 1 ? true : false;","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" String name \u003d lineArr[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" switch (taskType) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new ToDo(name, isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" String by \u003d lineArr[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Deadline(name, LocalDateTime.parse(by), isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" String from \u003d lineArr[3];","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" String to \u003d lineArr[4];","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Event(name, LocalDateTime.parse(from), LocalDateTime.parse(to), isDone));","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" continue;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":" reader.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"jeffrey-jian"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"jeffrey-jian"},"content":" return items;","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"jeffrey-jian"},"content":" public void writeData(ArrayList\u003cTask\u003e items) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"jeffrey-jian"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"jeffrey-jian"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(\"ip/src/data/duke.txt\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"jeffrey-jian"},"content":" for (Task t : items) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"jeffrey-jian"},"content":" writer.write(t.toDataString());","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"jeffrey-jian"},"content":" writer.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"jeffrey-jian"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"jeffrey-jian"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"jeffrey-jian"},"content":" throw new DukeException(\"OOPS!!! I am unable to write to your duke.txt data file. Exiting....\");","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jeffrey-jian":60}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":" private boolean done;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private String name;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public Task(String name) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d isDone;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" public void markDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" public void markUndone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" String doneCheckbox \u003d \"\";","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" if (this.done) {","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" doneCheckbox \u003d \"[X]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" doneCheckbox \u003d \"[ ]\";","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" return doneCheckbox + \" \" + this.name;","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" String isDone \u003d \"0\";","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" if (this.done) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" isDone \u003d \"1\";","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" return isDone + \"|\" + this.name;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":41}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" private ArrayList\u003cTask\u003e items;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" public TaskList(ArrayList\u003cTask\u003e items) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.items \u003d items;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" public ArrayList\u003cTask\u003e getItems() {","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" return items;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" public int getCount() {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" return items.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" public Task mark(int number) {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" items.get(number - 1).markDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":" return items.get(number - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" public Task unmark(int number) {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":" items.get(number - 1).markUndone();","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" return items.get(number - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" public Task delete(int number) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":" return items.remove(number - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" public Task addToDo(String name) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new ToDo(name, false));","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" return items.get(items.size() - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"jeffrey-jian"},"content":" public Task addDeadline(String name, LocalDateTime by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Deadline(name, by, false));","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" return items.get(items.size() - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"jeffrey-jian"},"content":" public Task addEvent(String name, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"jeffrey-jian"},"content":" items.add(new Event(name, from, to, false));","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"jeffrey-jian"},"content":" return items.get(items.size() - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":52}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class ToDo extends Task{","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":" super(name, isDone);","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" public String toDataString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" return \"T|\" + super.toDataString();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":16}},{"path":"src/main/java/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class ToDoCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private String name;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public ToDoCommand(String name) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.addToDo(name);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" ui.addItem(item.toString(), items.getCount());","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":15}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" private final String GREETING \u003d \"Hello! I\u0027m JED, your personal chat-bot!\\nWhat can I do for you?\";","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" private final String GOODBYE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" public Ui() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":" public String getInput() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":" return this.sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":" public void talk(String str) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"jeffrey-jian"},"content":" String line \u003d \"_\".repeat(50);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(str);","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"jeffrey-jian"},"content":" System.out.println(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"jeffrey-jian"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"jeffrey-jian"},"content":" talk(GREETING);","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"jeffrey-jian"},"content":" public void bye() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"jeffrey-jian"},"content":" talk(GOODBYE);","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"jeffrey-jian"},"content":" sc.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"jeffrey-jian"},"content":" public void showLoadingError() {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"I am unable to read your duke.txt data file. Starting with a blank task list...\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"jeffrey-jian"},"content":" public void list(ArrayList\u003c?\u003e items) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"jeffrey-jian"},"content":" int count \u003d items.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"jeffrey-jian"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Your list is currently empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"jeffrey-jian"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"jeffrey-jian"},"content":" String list \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"jeffrey-jian"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"jeffrey-jian"},"content":" list +\u003d \" \" + (i + 1) + \". \" + items.get(i) + \"\\n\";","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"jeffrey-jian"},"content":" talk(list);","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"jeffrey-jian"},"content":" public void markItem(String item) {","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Nice! I\u0027ve marked this task as done:\\n \" + item);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"jeffrey-jian"},"content":" public void unmarkItem(String item) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"OK, I\u0027ve marked this task as not done yet:\\n \" + item);","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"jeffrey-jian"},"content":" public void deleteItem(String item, int count) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Noted. I\u0027ve removed this task:\\n \" + item + \"\\n Now you have \" + count + \" tasks in your list\");","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"jeffrey-jian"},"content":" public void addItem(String item, int count) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"jeffrey-jian"},"content":" talk(\"Got it. I\u0027ve added this task:\\n \" + item + \"\\n Now you have \"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"jeffrey-jian"},"content":" + count + \" tasks in your list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"jeffrey-jian":68}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":" private int unmarkIndex;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":" public UnmarkCommand(int unmarkIndex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":" this.unmarkIndex \u003d unmarkIndex;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":" public void execute(TaskList items, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":" Task item \u003d items.unmark(unmarkIndex);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":" ui.unmarkItem(item.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":" storage.writeData(items.getItems());","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"jeffrey-jian":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jeffrey-jian"},"content":"hi","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"jeffrey-jian"},"content":"todo","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"jeffrey-jian"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"jeffrey-jian"},"content":"todo read book","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"jeffrey-jian"},"content":"deadline complete book review","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"jeffrey-jian"},"content":"deadline complete book review /by Monday 2359","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"jeffrey-jian"},"content":"todo extra","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"jeffrey-jian"},"content":"delete 4","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"jeffrey-jian"},"content":"event attend book club /from Tuesday 3pm /to Tuesday 5pm","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"jeffrey-jian"},"content":"mark 1","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"jeffrey-jian"},"content":"mark","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"jeffrey-jian"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"jeffrey-jian"},"content":"mark 3","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"jeffrey-jian"},"content":"mark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"jeffrey-jian"},"content":"unmark 4","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"jeffrey-jian"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"jeffrey-jian"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"jeffrey-jian":19}}] diff --git a/jeffrey-jian_ip_master/commits.json b/jeffrey-jian_ip_master/commits.json index ab5f54fb..f5f7147a 100644 --- a/jeffrey-jian_ip_master/commits.json +++ b/jeffrey-jian_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jeffrey-jian":[{"date":"2023-08-23","commitResults":[{"hash":"06d8c66a01ec3947c9078c0137ec83f27ac8d7a7","isMergeCommit":false,"messageTitle":"Rename JED, greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"193afd484495372df6974aa60c145419bc853f5b","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b47d291beaf5965a021aa88bbb235b1e525fc9f6","isMergeCommit":false,"messageTitle":"Add list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a8e022e91e352063a37ca2c5aad051d25faf1bf3","isMergeCommit":false,"messageTitle":"Use Tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"aaeddffa5ba169346c0de24a2ac39c5f57a7f7a0","isMergeCommit":false,"messageTitle":"Add mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"61e0edd217baf5e985bb18a282fedf987028c4e1","isMergeCommit":false,"messageTitle":"Add ToDos","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"7adef1816c79925f120d2be6368859c00c6ba99c","isMergeCommit":false,"messageTitle":"Add Deadlines","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"ef42ff9c5de840776a4d1c8bce356418b6645e64","isMergeCommit":false,"messageTitle":"bugfix string trim","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"e1bd3aeeae210536740276021e9d6d423db9c947","isMergeCommit":false,"messageTitle":"simple todo bye test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"a5796e5514edb43996942ab1af71a559aee346f9","isMergeCommit":false,"messageTitle":"More comprehensive test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"8efac7f27a64ec9e3e64682d95ca0fbfd23168d2","isMergeCommit":false,"messageTitle":"Refactor code, use switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":56}}},{"hash":"58d20eb56ac1474da3240d53aca950cc87836c9d","isMergeCommit":false,"messageTitle":"Add DukeException for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"faf8ebd14e75ec473b3687b8b5a279f72bc57398","isMergeCommit":false,"messageTitle":"Add exceptionhandling to test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"ba0c0a2a68ff72d2bbb40ff055d3dc282ac16a47","isMergeCommit":false,"messageTitle":"Bug fix, working app","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":62}}},{"hash":"09dc7a11e2141fb9330e12050a6402799cc0fbf1","isMergeCommit":false,"messageTitle":"Use ArrayList for tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":16}}},{"hash":"9be57dcc2d3b9bdbeda57b888f5b60b84d3a665a","isMergeCommit":false,"messageTitle":"Add delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b936e2b1a385680c56be15868c54902b67d91164","isMergeCommit":false,"messageTitle":"Add test for delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2023-08-26","commitResults":[{"hash":"ea34b4f5d417690535c22307cde6144ffb214402","isMergeCommit":false,"messageTitle":"fix indent for switch-case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":93}}}]},{"date":"2023-08-27","commitResults":[{"hash":"5ba2e4908b6e8b8b103924cc581e7b37fd1e18c1","isMergeCommit":false,"messageTitle":"Read and write to duke.txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":11}}},{"hash":"1a8e4ffadf7c1da8a7c9d0d362fd23e3e2dd2876","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e41bfbca78ce89b2c497f8f64c642d3b870748cf","isMergeCommit":false,"messageTitle":"Use datetime for Deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":17,"deletions":5}}},{"hash":"2b7b0a5e3ec78c30b4b8c8d8788ed3ed61b42feb","isMergeCommit":false,"messageTitle":"Use datetime for event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":14,"deletions":7}}},{"hash":"6b73d13273ea9d9e67c6925d420f54313f9f7a7b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jeffrey-jian":{"java":335,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":23}},"authorContributionVariance":{"jeffrey-jian":23472.037},"authorDisplayNameMap":{"jeffrey-jian":"CS2103T-W17-3 JEFF.. JIE"}} +{"authorDailyContributionsMap":{"jeffrey-jian":[{"date":"2023-08-23","commitResults":[{"hash":"06d8c66a01ec3947c9078c0137ec83f27ac8d7a7","isMergeCommit":false,"messageTitle":"Rename JED, greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"193afd484495372df6974aa60c145419bc853f5b","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}}]},{"date":"2023-08-24","commitResults":[{"hash":"b47d291beaf5965a021aa88bbb235b1e525fc9f6","isMergeCommit":false,"messageTitle":"Add list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"a8e022e91e352063a37ca2c5aad051d25faf1bf3","isMergeCommit":false,"messageTitle":"Use Tasks","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":3}}},{"hash":"aaeddffa5ba169346c0de24a2ac39c5f57a7f7a0","isMergeCommit":false,"messageTitle":"Add mark and unmark features","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"61e0edd217baf5e985bb18a282fedf987028c4e1","isMergeCommit":false,"messageTitle":"Add ToDos","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"7adef1816c79925f120d2be6368859c00c6ba99c","isMergeCommit":false,"messageTitle":"Add Deadlines","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"ef42ff9c5de840776a4d1c8bce356418b6645e64","isMergeCommit":false,"messageTitle":"bugfix string trim","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":2}}},{"hash":"e1bd3aeeae210536740276021e9d6d423db9c947","isMergeCommit":false,"messageTitle":"simple todo bye test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"a5796e5514edb43996942ab1af71a559aee346f9","isMergeCommit":false,"messageTitle":"More comprehensive test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"8efac7f27a64ec9e3e64682d95ca0fbfd23168d2","isMergeCommit":false,"messageTitle":"Refactor code, use switch case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":56}}},{"hash":"58d20eb56ac1474da3240d53aca950cc87836c9d","isMergeCommit":false,"messageTitle":"Add DukeException for error handling","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"faf8ebd14e75ec473b3687b8b5a279f72bc57398","isMergeCommit":false,"messageTitle":"Add exceptionhandling to test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"ba0c0a2a68ff72d2bbb40ff055d3dc282ac16a47","isMergeCommit":false,"messageTitle":"Bug fix, working app","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":62}}},{"hash":"09dc7a11e2141fb9330e12050a6402799cc0fbf1","isMergeCommit":false,"messageTitle":"Use ArrayList for tasks","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":16}}},{"hash":"9be57dcc2d3b9bdbeda57b888f5b60b84d3a665a","isMergeCommit":false,"messageTitle":"Add delete","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b936e2b1a385680c56be15868c54902b67d91164","isMergeCommit":false,"messageTitle":"Add test for delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2023-08-26","commitResults":[{"hash":"ea34b4f5d417690535c22307cde6144ffb214402","isMergeCommit":false,"messageTitle":"fix indent for switch-case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":93}}}]},{"date":"2023-08-27","commitResults":[{"hash":"5ba2e4908b6e8b8b103924cc581e7b37fd1e18c1","isMergeCommit":false,"messageTitle":"Read and write to duke.txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":106,"deletions":11}}},{"hash":"1a8e4ffadf7c1da8a7c9d0d362fd23e3e2dd2876","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e41bfbca78ce89b2c497f8f64c642d3b870748cf","isMergeCommit":false,"messageTitle":"Use datetime for Deadline","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":17,"deletions":5}}},{"hash":"2b7b0a5e3ec78c30b4b8c8d8788ed3ed61b42feb","isMergeCommit":false,"messageTitle":"Use datetime for event","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":14,"deletions":7}}},{"hash":"6b73d13273ea9d9e67c6925d420f54313f9f7a7b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"157f593104f48919589d66721f0fc521579abc8e","isMergeCommit":false,"messageTitle":"use Ui class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":104,"deletions":68}}},{"hash":"82da5c38fecf96819683b1b179f7a750821490b2","isMergeCommit":false,"messageTitle":"use Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":52}}}]},{"date":"2023-08-28","commitResults":[{"hash":"e71efee1b9532f87e11c37975e04d08ac082a13a","isMergeCommit":false,"messageTitle":"use TaskList","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":130,"deletions":47}}},{"hash":"2e618d52fe48dbd9007ff932796fb1c55a0d6d26","isMergeCommit":false,"messageTitle":"use Parser and Command classes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":251,"deletions":123}}},{"hash":"428ec56cdb0e99dfc2eadc3a02e76b49bb522d60","isMergeCommit":true,"messageTitle":"Merge branch \u0027more-oop\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jeffrey-jian":{"java":595,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":25}},"authorContributionVariance":{"jeffrey-jian":48330.74},"authorDisplayNameMap":{"jeffrey-jian":"CS2103T-W17-3 JEFF.. JIE"}} diff --git a/josepholim_ip_master/authorship.json b/josepholim_ip_master/authorship.json index c1acb7a9..7a9478db 100644 --- a/josepholim_ip_master/authorship.json +++ b/josepholim_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" public Deadline(String description, String by) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":23}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" private static final String HORIZONTAL_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" private Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" private ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" private int countTasks \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" duke.run();","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" public void printWithLines(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE + \"\\n\" + s + \"\\n\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" public void printTask(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Got it. I\u0027ve added this task:\" + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" + s + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" + \"Now you have \" + this.countTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" public void printDeleteTask(String s) {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Noted. I\u0027ve removed this task:\" + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" + s + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" + \"Now you have \" + this.countTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" public void addToDo(String input) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" if (input.indexOf(\" \") \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" String description \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" tasks.add(new ToDo(description));","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" countTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":" printTask(tasks.get(countTasks - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" public void addDeadline(String input) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":" if (input.indexOf(\" \") \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" String[] split \u003d input.substring(input.indexOf(\" \") + 1).split(\" /by \");","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":" tasks.add(new Deadline(split[0], split[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" countTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" printTask(tasks.get(countTasks - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"josepholim"},"content":" public void addEvent(String input) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"josepholim"},"content":" if (input.indexOf(\" \") \u003d\u003d -1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of an event cannot be empty.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"josepholim"},"content":" String[] split \u003d input.substring(input.indexOf(\" \") + 1).split(\" /from | /to \");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"josepholim"},"content":" tasks.add(new Event(split[0], split[1], split[2]));","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"josepholim"},"content":" countTasks++;","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"josepholim"},"content":" printTask(tasks.get(countTasks - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"josepholim"},"content":" public void printList() {","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"josepholim"},"content":" for (int i \u003d 0; i \u003c countTasks; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"josepholim"},"content":" System.out.println((i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"josepholim"},"content":" public void unknownInput() throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"josepholim"},"content":" public void check(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"josepholim"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"josepholim"},"content":" printList();","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"mark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"josepholim"},"content":" int index \u003d Integer.parseInt(input.replace(\"mark \", \"\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"josepholim"},"content":" tasks.get(index - 1).markAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Nice! I\u0027ve marked this task as done:\" + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"josepholim"},"content":" + tasks.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"unmark \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"josepholim"},"content":" int index \u003d Integer.parseInt(input.replace(\"unmark \", \"\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"josepholim"},"content":" tasks.get(index - 1).unmarkAsDone();","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"josepholim"},"content":" printWithLines(\"OK, I\u0027ve marked this task as not done yet:\" + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"josepholim"},"content":" + tasks.get(index - 1));","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"josepholim"},"content":" addToDo(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"josepholim"},"content":" addDeadline(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"josepholim"},"content":" addEvent(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"josepholim"},"content":" } else if (input.startsWith(\"delete \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"josepholim"},"content":" int index \u003d Integer.parseInt(input.replace(\"delete \", \"\"));","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"josepholim"},"content":" countTasks--;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"josepholim"},"content":" printDeleteTask(tasks.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"josepholim"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"josepholim"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"josepholim"},"content":" unknownInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"josepholim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"josepholim"},"content":" printWithLines(e.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"josepholim"},"content":" public void run() {","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Hello, I\u0027m Je-O\" + \"\\n\"","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"josepholim"},"content":" + \"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"josepholim"},"content":" DukeFile dukeFile \u003d new DukeFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"josepholim"},"content":" tasks \u003d dukeFile.readFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"josepholim"},"content":" countTasks \u003d tasks.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"josepholim"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"josepholim"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"josepholim"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"josepholim"},"content":" dukeFile.writeToFile(tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"josepholim"},"content":" sc.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"josepholim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"josepholim"},"content":" check(input);","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"josepholim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"josepholim"},"content":" printWithLines(e.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"josepholim":123,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":10}},{"path":"src/main/java/DukeFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"public class DukeFile {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" private File FILE;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public DukeFile() throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" File directory \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" this.FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" if (!this.FILE.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" this.FILE.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to create file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" public ArrayList\u003cTask\u003e readFile() throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" Scanner sc \u003d new Scanner(this.FILE);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" String taskType \u003d input.substring(1, 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" String taskMark \u003d input.substring(4, 5);","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" String taskDescription \u003d input.substring(7);","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" Task toDo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" toDo.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" tasks.add(toDo);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" String[] split \u003d taskDescription.split(\" \\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" Task deadline \u003d new Deadline(split[0], split[1]);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" tasks.add(deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":" String[] split \u003d taskDescription.split(\" \\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"josepholim"},"content":" Task event \u003d new Event(split[0], split[1], split[2]);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"josepholim"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"josepholim"},"content":" tasks.add(event);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"josepholim"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"josepholim"},"content":" return tasks;","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"josepholim"},"content":" public void writeToFile(ArrayList\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"josepholim"},"content":" FileWriter fw \u003d new FileWriter(FILE);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"josepholim"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"josepholim"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"josepholim"},"content":" fw.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"josepholim"},"content":" fw.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to write to file.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"josepholim":78}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public Event(String description, String from, String to) throws DukeException {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":26}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":26}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"todo borrow book","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":11}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"# duke.Duke project template","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":"3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-28"},{"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":{"josepholim":2,"-":22}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.command.Command;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.parser.Parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" private Scanner sc;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" private Storage storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" public Duke() {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" public void run() {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" this.ui.printHello();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" this.storage.initialize();","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" this.tasks \u003d this.storage.readFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" this.ui.printErrorMessage(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" while (this.sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" String input \u003d this.sc.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" Command command \u003d Parser.parse(input);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" command.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" if (input.split(\" \")[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":" sc.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":" this.ui.printErrorMessage(e);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" duke.run();","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"josepholim":49,"-":2}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" ui.printBye();","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":14}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":10}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" private String by;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" public DeadlineCommand(String description, String by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" Task task \u003d new Deadline(this.description, this.by);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" ui.printAddTask(task, tasks.getCountTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":31}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" private int index;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" ui.printDeleteTask(tasks.getTask(this.index), tasks.getCountTasks() - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" tasks.removeTask(this.index);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":20}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" private String from;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" private String to;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" public EventCommand(String description, String from, String to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" Task task \u003d new Event(this.description, this.from, this.to);","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" ui.printAddTask(task, tasks.getCountTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":33}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" ui.printTaskList(tasks, tasks.getCountTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":13}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" private int index;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" Task task \u003d tasks.getTask(this.index);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" ui.printMarkAsDone(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":22}},{"path":"src/main/java/duke/command/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"public class ToDoCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" public ToDoCommand(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" Task task \u003d new ToDo(this.description);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" tasks.addTask(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" ui.printAddTask(task, tasks.getCountTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":23}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.command;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" private int index;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" Task task \u003d tasks.getTask(this.index);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" task.unmarkAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" ui.printUnmarkAsDone(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":22}},{"path":"src/main/java/duke/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.exception;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":" public DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" return super.getMessage();","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":12}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.parser;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.command.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" enum CommandWord {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" BYE,","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" DELETE,","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" LIST,","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" MARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" UNMARK,","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" TODO,","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" DEADLINE,","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" EVENT,","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" CommandWord commandWord \u003d CommandWord.valueOf(input.split(\" \")[0].trim().toUpperCase());","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" switch(commandWord) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" case BYE:","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" return new ByeCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" case DELETE:","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" return new DeleteCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" case LIST:","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" return new ListCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" case MARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" return new MarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" case UNMARK:","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" return new UnmarkCommand(Integer.parseInt(input.split(\" \")[1]) - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" case TODO:","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" return new ToDoCommand(input.split(\" \")[1].trim());","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" case DEADLINE:","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" String[] split \u003d input.split(\" \", 2)[1].trim().split(\" /by \");","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":" return new DeadlineCommand(split[0], split[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of the deadline is of wrong format.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" case EVENT:","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":" String[] split \u003d input.split(\" \", 2)[1].trim().split(\" /from | /to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" return new EventCommand(split[0], split[1], split[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! The description of the event is of wrong format.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"josepholim"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":55}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.storage;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"public class Storage {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" private final String DIRECTORY \u003d \"./data\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" private final String FILE_PATH \u003d DIRECTORY + \"/duke.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" private File FILE;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" public void initialize() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" File directory \u003d new File(this.DIRECTORY);","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" directory.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" this.FILE \u003d new File(this.FILE_PATH);","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" if (!this.FILE.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" this.FILE.createNewFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to create file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" public TaskList readFile() throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" Scanner sc \u003d new Scanner(this.FILE);","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":" String taskType \u003d input.substring(1, 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" String taskMark \u003d input.substring(4, 5);","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":" String taskDescription \u003d input.substring(7);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":" Task toDo \u003d new ToDo(taskDescription);","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" toDo.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":" tasks.addTask(toDo);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" String[] split \u003d taskDescription.split(\" \\\\(by: |\\\\)\");","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" Task deadline \u003d new Deadline(split[0], split[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"josepholim"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"josepholim"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"josepholim"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"josepholim"},"content":" String[] split \u003d taskDescription.split(\" \\\\(from: | to: |\\\\)\");","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"josepholim"},"content":" Task event \u003d new Event(split[0], split[1], split[2]);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"josepholim"},"content":" if (taskMark.equals(\"X\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"josepholim"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"josepholim"},"content":" tasks.addTask(event);","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"josepholim"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"josepholim"},"content":" return tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"josepholim"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Invalid date format. Please type dates in the format yyyy-mm-dd\");","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to load tasks from file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"josepholim"},"content":" public void writeToFile(TaskList tasks) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"josepholim"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"josepholim"},"content":" FileWriter fw \u003d new FileWriter(FILE);","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"josepholim"},"content":" for (int i \u003d 0; i \u003c tasks.getCountTasks(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"josepholim"},"content":" Task task \u003d tasks.getTask(i);","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"josepholim"},"content":" fw.write(task.toString() + \"\\n\");","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"josepholim"},"content":" fw.close();","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"josepholim"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"josepholim"},"content":" throw new DukeException(\"☹ OOPS!!! Failed to write to file.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":85}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" protected LocalDate by;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" public Deadline(String description, String by) throws DateTimeParseException {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" this.by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":21}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" protected LocalDate from;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" protected LocalDate to;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public Event(String description, String from, String to) throws DateTimeParseException {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")),","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")));","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":24}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"public class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":" protected String description;","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.description);","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":28}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" public TaskList() {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" this.tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":" public void removeTask(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" public int getCountTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":31}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":" public ToDo(String description) {","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":" super(description);","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":13}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"package duke.ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"import duke.task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":" private final String HORIZONTAL_LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":" public void printWithLines(String s) {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE + \"\\n\" + s + \"\\n\" + HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":" public void printHello() {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Hello, I\u0027m Je-O\" + \"\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":" + \"What can I do for you?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":" public void printAddTask(Task task, int countTasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Got it. I\u0027ve added this task:\" + \"\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":" + \"Now you have \" + countTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":" public void printDeleteTask(Task task, int countTasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Noted. I\u0027ve removed this task:\" + \"\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":" + task.toString() + \"\\n\"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"josepholim"},"content":" + \"Now you have \" + countTasks + \" tasks in the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"josepholim"},"content":" public void printTaskList(TaskList tasks, int countTasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"josepholim"},"content":" for (int i \u003d 0; i \u003c countTasks; i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"josepholim"},"content":" System.out.println((i + 1) + \". \" + tasks.getTask(i));","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"josepholim"},"content":" System.out.println(HORIZONTAL_LINE);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"josepholim"},"content":" public void printMarkAsDone(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Nice! I\u0027ve marked this task as done:\" + \"\\n\" + task);","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"josepholim"},"content":" public void printUnmarkAsDone(Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"josepholim"},"content":" printWithLines(\"OK, I\u0027ve marked this task as not done yet:\" + \"\\n\" + task);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"josepholim"},"content":" public void printBye() {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"josepholim"},"content":" printWithLines(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"josepholim"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"josepholim"},"content":" public void printErrorMessage(DukeException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"josepholim"},"content":" printWithLines(e.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"josepholim"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"josepholim"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"josepholim":54}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"josepholim"},"content":"todo sleep","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"josepholim"},"content":"deadline project","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"josepholim"},"content":"deadline project /by Sunday","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"josepholim"},"content":"deadline project /by 2023-12-12","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"josepholim"},"content":"event finals","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"josepholim"},"content":"event finals /from 2023-10-10","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"event finals /from 2023-50-50 /to 2023-50-50","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"josepholim"},"content":"event finals /from 2023-10-10 /to 2023-11-11","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"josepholim"},"content":"mark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"josepholim"},"content":"mark 3","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"josepholim"},"content":"unmark 2","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"josepholim"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"josepholim"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"josepholim"},"content":"delete 1","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"josepholim"},"content":"deadline submit assignment /by 2023-11-11","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"josepholim"},"content":"list","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"josepholim"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"josepholim":27}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"josepholim"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\duke\\*.java","lastModifiedDate":"2023-08-28"},{"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":"josepholim"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":19,"josepholim":2}}] diff --git a/josepholim_ip_master/commits.json b/josepholim_ip_master/commits.json index 22a09a5e..eb358ba1 100644 --- a/josepholim_ip_master/commits.json +++ b/josepholim_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"josepholim":[{"date":"2023-08-24","commitResults":[{"hash":"7ee23026188c24a1ed6c4cb23e6e324207a886b5","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9727f4b8b835c6c6c74f9a2efb74e36f8363dfd6","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"cfaa5a99f4bc2c962c9cc1c0dad8c1c97adccb0a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"96d8857abce260151a24c4c3d3cdfde91f89c2c4","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}},{"hash":"ba8eb5322dd6ae429a2fdbf02b953761d6a50948","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":5}}},{"hash":"e6fb2d96a1be3749abce880ab2f5806f9076ee64","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"7ce60b4de740f67d994f4bfc33d2eb35ea7cb5e0","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":13}}},{"hash":"89e15ac0e7b017ae1540c833268953f4b045dc93","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":12}}},{"hash":"22e75ae5a02c64c253baa99cb5800165577629c2","isMergeCommit":false,"messageTitle":"Revise exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":37}}}]},{"date":"2023-08-27","commitResults":[{"hash":"d9f10aed64d3b54682d33058b29b78d9f833e420","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":9}}},{"hash":"01de43e2df1c994d8e5cf7c3b410bd85329fb378","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3327b015821eca9f488b3ab6695854196c5b8cdd","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":10}}},{"hash":"b9f54178679d94ebd203d55d43034cc0e10e0d84","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"68d4450adeded1c4767f1de596044eccd84bd08d","isMergeCommit":false,"messageTitle":"Revise exception 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":26}}}]}]},"authorFileTypeContributionMap":{"josepholim":{"java":297,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"josepholim":13702.761},"authorDisplayNameMap":{"josepholim":"CS2103T-W16-1 JOSE.. LIM"}} +{"authorDailyContributionsMap":{"josepholim":[{"date":"2023-08-24","commitResults":[{"hash":"7ee23026188c24a1ed6c4cb23e6e324207a886b5","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}},{"hash":"9727f4b8b835c6c6c74f9a2efb74e36f8363dfd6","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"cfaa5a99f4bc2c962c9cc1c0dad8c1c97adccb0a","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"96d8857abce260151a24c4c3d3cdfde91f89c2c4","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":2}}},{"hash":"ba8eb5322dd6ae429a2fdbf02b953761d6a50948","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":5}}},{"hash":"e6fb2d96a1be3749abce880ab2f5806f9076ee64","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0}}},{"hash":"7ce60b4de740f67d994f4bfc33d2eb35ea7cb5e0","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":13}}},{"hash":"89e15ac0e7b017ae1540c833268953f4b045dc93","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":12}}},{"hash":"22e75ae5a02c64c253baa99cb5800165577629c2","isMergeCommit":false,"messageTitle":"Revise exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":37}}}]},{"date":"2023-08-27","commitResults":[{"hash":"d9f10aed64d3b54682d33058b29b78d9f833e420","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":9}}},{"hash":"01de43e2df1c994d8e5cf7c3b410bd85329fb378","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3327b015821eca9f488b3ab6695854196c5b8cdd","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":10}}},{"hash":"b9f54178679d94ebd203d55d43034cc0e10e0d84","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"68d4450adeded1c4767f1de596044eccd84bd08d","isMergeCommit":false,"messageTitle":"Revise exception 2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":26}}}]},{"date":"2023-08-28","commitResults":[{"hash":"dd85a9e6884a9ae29678635c295b1aedc402c38e","isMergeCommit":false,"messageTitle":"Add More OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":19,"deletions":3},"java":{"insertions":292,"deletions":133}}},{"hash":"6a47ce4a7024bb0a3568f6a38e4d66759fd26bbb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"135b7801d193e0e36b011d662bb882c452207311","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":82}}},{"hash":"1a31480d8174ac6bb85118417dd4d334afcc028d","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":2}}},{"hash":"ae0e60187c3c1da1e7762e4910b87823d1700a57","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d464008ed0261f13fc02c7fb12ed954fd40de00e","isMergeCommit":false,"messageTitle":"Move Duke.java","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0},"bat":{"insertions":2,"deletions":2},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"josepholim":{"java":560,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":27}},"authorContributionVariance":{"josepholim":49467.688},"authorDisplayNameMap":{"josepholim":"CS2103T-W16-1 JOSE.. LIM"}} diff --git a/longnguyentan_ip_master/authorship.json b/longnguyentan_ip_master/authorship.json index 2f74b572..5118397f 100644 --- a/longnguyentan_ip_master/authorship.json +++ b/longnguyentan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"# main.Dialogix project template","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":"3. After that, locate the `src/main/java/main.Dialogix.java` file, right-click it, and choose `Run main.Dialogix.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-28"},{"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":{"longnguyentan":2,"-":22}},{"path":"src/main/java/main/Dialogix.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":"import task.Event;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":"import task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"import task.Todo;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"public class Dialogix {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\" Hello! I\u0027m Dialogix\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"longnguyentan"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"longnguyentan"},"content":" boolean continueDialog \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"longnguyentan"},"content":" while (continueDialog) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"longnguyentan"},"content":" System.out.print(\"User: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"longnguyentan"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"longnguyentan"},"content":" if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"longnguyentan"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"longnguyentan"},"content":" System.out.println((i + 1) + \". \" + list.get(i).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"longnguyentan"},"content":" String description \u003d userInput.replaceFirst(\"todo\\\\s+\", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"longnguyentan"},"content":" list.add(new Todo(description));","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"longnguyentan"},"content":" String[] parts \u003d userInput.replaceFirst(\"deadline\\\\s+\", \"\").split(\" /by \");","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"longnguyentan"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"longnguyentan"},"content":" list.add(new Deadline(parts[0], parts[1]));","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Invalid input format for \u0027deadline\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"longnguyentan"},"content":" String[] parts \u003d userInput.replaceFirst(\"event\\\\s+\", \"\").split(\" /from | /to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"longnguyentan"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"longnguyentan"},"content":" list.add(new Event(parts[0], parts[1], parts[2]));","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Invalid input format for \u0027event\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"longnguyentan"},"content":" continueDialog \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: I\u0027m sorry, I don\u0027t understand that command.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"longnguyentan"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"longnguyentan":64}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String by;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":15}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String from;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" protected String to;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":17}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"longnguyentan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"longnguyentan"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"longnguyentan"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"longnguyentan"},"content":" return description;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"longnguyentan"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":32}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":"java -classpath ..\\bin main.Dialogix \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"longnguyentan":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"# main.Dialogix project template","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":"3. After that, locate the `src/main/java/main.Dialogix.java` file, right-click it, and choose `Run main.Dialogix.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2023-08-28"},{"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":{"longnguyentan":2,"-":22}},{"path":"src/main/java/exception/DialogixException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package exception;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class DialogixException extends Exception {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" public DialogixException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":" super(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":9}},{"path":"src/main/java/main/Dialogix.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package main;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"import exception.DialogixException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":"import task.Event;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"import task.Task;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":"import task.Todo;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":"import java.util.List;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":"public class Dialogix {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\" Hello! I\u0027m Dialogix\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"longnguyentan"},"content":" List\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"longnguyentan"},"content":" boolean continueDialog \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"longnguyentan"},"content":" while (continueDialog) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"longnguyentan"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"longnguyentan"},"content":" System.out.print(\"User: \");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"longnguyentan"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"longnguyentan"},"content":" if (userInput.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Here are the tasks in your list:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"longnguyentan"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"longnguyentan"},"content":" System.out.println((i + 1) + \". \" + list.get(i).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"longnguyentan"},"content":" String description \u003d userInput.replaceFirst(\"todo\\\\s+\", \"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"longnguyentan"},"content":" list.add(new Todo(description));","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"longnguyentan"},"content":" String[] parts \u003d userInput.replaceFirst(\"deadline\\\\s+\", \"\").split(\" /by \");","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"longnguyentan"},"content":" if (parts.length \u003d\u003d 2) {","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"longnguyentan"},"content":" list.add(new Deadline(parts[0], parts[1]));","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Invalid input format for \u0027deadline\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"longnguyentan"},"content":" String[] parts \u003d userInput.replaceFirst(\"event\\\\s+\", \"\").split(\" /from | /to \");","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"longnguyentan"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"longnguyentan"},"content":" list.add(new Event(parts[0], parts[1], parts[2]));","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Got it. I\u0027ve added this task:\\n \" + list.get(list.size() - 1).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Invalid input format for \u0027event\u0027.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"longnguyentan"},"content":" continueDialog \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"longnguyentan"},"content":" int taskIndex \u003d Integer.parseInt(userInput.replaceFirst(\"delete\\\\s+\", \"\")) - 1;","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"longnguyentan"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c list.size()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"longnguyentan"},"content":" Task deletedTask \u003d list.remove(taskIndex);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: Noted. I\u0027ve removed this task:\\n \" + deletedTask.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"longnguyentan"},"content":" throw new DialogixException(\":( OOPS!!! Task index is out of range.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"longnguyentan"},"content":" } else if (userInput.trim().isEmpty()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"longnguyentan"},"content":" throw new DialogixException(\":( OOPS!!! The description cannot be empty.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"longnguyentan"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"longnguyentan"},"content":" throw new DialogixException(\":( OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"longnguyentan"},"content":" } catch (DialogixException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"longnguyentan"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"Bot: An error occurred: \" + e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"longnguyentan"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"longnguyentan"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"longnguyentan":86}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String by;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" this.by \u003d by;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":15}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String from;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" protected String to;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":17}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" protected String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":" public Task(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"longnguyentan"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"longnguyentan"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"longnguyentan"},"content":" isDone \u003d true;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"longnguyentan"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"longnguyentan"},"content":" isDone \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"longnguyentan"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"longnguyentan"},"content":" return description;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"longnguyentan"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":32}},{"path":"src/main/java/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"longnguyentan"},"content":"package task;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"longnguyentan"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"longnguyentan"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"longnguyentan"},"content":" super(description);","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"longnguyentan"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"longnguyentan"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"longnguyentan"},"content":" public String toString() {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"longnguyentan"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"longnguyentan"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"longnguyentan"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"longnguyentan":12}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"longnguyentan"},"content":"java -classpath ..\\bin main.Dialogix \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"longnguyentan":1,"-":20}}] diff --git a/longnguyentan_ip_master/commits.json b/longnguyentan_ip_master/commits.json index 711b1439..9720984d 100644 --- a/longnguyentan_ip_master/commits.json +++ b/longnguyentan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"longnguyentan":[{"date":"2023-08-25","commitResults":[{"hash":"e1d057c578cc1e8897c8549a29ca3a1fda6224bf","isMergeCommit":false,"messageTitle":"Level 0 Update Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a4a7d3255abcedc186ee77fa80bc32f45d1dc19c","isMergeCommit":false,"messageTitle":"Level 0 Update Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ecec5da85ea2d9c5667abb52aee986bd48d4707c","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":11}}},{"hash":"80311f6f9a3bca7e0968a6b482bc92128c4f666b","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}}]},{"date":"2023-08-28","commitResults":[{"hash":"2237cf777a650db3faf1cf4b312431cf14dfe74a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"3b64be6f7c37958cc437c31e114df19cb8e9bfd3","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"e9f860c3acf02ecb6b795a751be1f20e260e5a1c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":27}}}]}]},"authorFileTypeContributionMap":{"longnguyentan":{"java":140,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"longnguyentan":2676.4297},"authorDisplayNameMap":{"longnguyentan":"CS2103T-T14-2 NGUY..LONG"}} +{"authorDailyContributionsMap":{"longnguyentan":[{"date":"2023-08-25","commitResults":[{"hash":"e1d057c578cc1e8897c8549a29ca3a1fda6224bf","isMergeCommit":false,"messageTitle":"Level 0 Update Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":6}}}]},{"date":"2023-08-27","commitResults":[{"hash":"a4a7d3255abcedc186ee77fa80bc32f45d1dc19c","isMergeCommit":false,"messageTitle":"Level 0 Update Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":8},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"ecec5da85ea2d9c5667abb52aee986bd48d4707c","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":11}}},{"hash":"80311f6f9a3bca7e0968a6b482bc92128c4f666b","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}}]},{"date":"2023-08-28","commitResults":[{"hash":"2237cf777a650db3faf1cf4b312431cf14dfe74a","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"3b64be6f7c37958cc437c31e114df19cb8e9bfd3","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"e9f860c3acf02ecb6b795a751be1f20e260e5a1c","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":27}}},{"hash":"f805c78242a62404088cebe7fcebf7553ff9bf48","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"3343202d0fde6fd9fb45f300b74aeb2b1663576b","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":34}}},{"hash":"1c2f813f09c7eb13180e6619547f2048d4f61746","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"longnguyentan":{"java":171,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"longnguyentan":6402.628},"authorDisplayNameMap":{"longnguyentan":"CS2103T-T14-2 NGUY..LONG"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index bbfac782..db61bc8f 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,54 +1,54 @@ -Aug 27, 2023 4:47:23 PM reposense.system.LogsManager addFileHandler +Aug 28, 2023 1:13:55 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Aug 27, 2023 4:47:23 PM reposense.parser.CsvParser validateHeader +Aug 28, 2023 1:13:55 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Aug 27, 2023 4:47:25 PM reposense.parser.CsvParser validateHeader +Aug 28, 2023 1:13:57 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias scarletblanks found. The alias will belong to the last author - ScarletBlanks -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kb-tay found. The alias will belong to the last author - Kb-Tay -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias h1410101 found. The alias will belong to the last author - H1410101 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shashahchk found. The alias will belong to the last author - shashahchk -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yucongkoo found. The alias will belong to the last author - yucongkoo -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias kokseng1 found. The alias will belong to the last author - Kokseng1 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias vanessamae23 found. The alias will belong to the last author - Vanessamae23 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias singa-pirate found. The alias will belong to the last author - Singa-pirate -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias nicholastng010601 found. The alias will belong to the last author - nicholastng010601 -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias weiennn found. The alias will belong to the last author - Weiennn -Aug 27, 2023 4:47:25 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Aug 28, 2023 1:13:57 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias adammangzijun found. The alias will belong to the last author - adammangzijun -Aug 27, 2023 4:47:25 PM reposense.git.GitConfig getGlobalGitLfsConfig +Aug 28, 2023 1:13:57 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -64,1451 +64,1395 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/siqirua/ip.git... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thaddeusong/ip.git... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/emzm2023/ip.git... +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CJ-Lee01/ip.git... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/emzm2023/ip.git to complete... -Aug 27, 2023 4:47:25 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CJ-Lee01/ip.git to complete... +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thaddeusong/ip.git to complete... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thaddeusong/ip.git completed! -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:13:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/siqirua/ip.git to complete... +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanteckfang/ip.git... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thaddeusong/ip.git completed! +Aug 28, 2023 1:13:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [1/479] Analyzing https://github.com/CJ-Lee01/ip.git (master)... +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/siqirua/ip.git completed! +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanteckfang/ip.git to complete... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [1/479] Analyzing https://github.com/thaddeusong/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CJ-Lee01/ip.git completed! -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ph-nathan/ip.git... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/479] Analyzing https://github.com/CJ-Lee01/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/479] Analyzing https://github.com/thaddeusong/ip.git (master)... +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ph-nathan/ip.git to complete... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/siqirua/ip.git completed! -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/butteredyakiimo/ip.git... +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/emzm2023/ip.git completed! -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... +Aug 28, 2023 1:13:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CJ-Lee01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:13:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CJ-Lee01/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/butteredyakiimo/ip.git... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yuxunn/ip.git... -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuxunn/ip.git to complete... -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:13:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thaddeusong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/butteredyakiimo/ip.git to complete... +Aug 28, 2023 1:13:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thaddeusong/ip.git (master)... +Aug 28, 2023 1:13:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... +Aug 28, 2023 1:13:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/CJ-Lee01/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanteckfang/ip.git completed! +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RB9823/ip.git... +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... +Aug 28, 2023 1:13:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/CJ-Lee01/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thaddeusong/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:13:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuxunn/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/thaddeusong/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/479] Analyzing https://github.com/siqirua/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ph-nathan/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TyrusLye/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cxo05/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shyanyong/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cxo05/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/thaddeusong/ip.git (master) completed! -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shyanyong/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/479] Analyzing https://github.com/siqirua/ip.git (master)... +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CJ-Lee01/ip.git (master) completed! +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [4/479] Analyzing https://github.com/emzm2023/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/siqirua/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:13:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/siqirua/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/emzm2023/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:13:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/emzm2023/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/emzm2023/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/emzm2023/ip.git (master)... -Aug 27, 2023 4:47:26 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/emzm2023/ip.git (master) completed! -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanteckfang/ip.git completed! -Aug 27, 2023 4:47:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ph-nathan/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RB9823/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RB9823/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TyrusLye/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/479] Analyzing https://github.com/ph-nathan/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TyrusLye/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/butteredyakiimo/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuxunn/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cxo05/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cxo05/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shyanyong/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shyanyong/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/479] Analyzing https://github.com/tanteckfang/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/479] Analyzing https://github.com/tanteckfang/ip.git (master)... +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanteckfang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:13:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanteckfang/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [7/479] Analyzing https://github.com/butteredyakiimo/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanteckfang/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanteckfang/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanteckfang/ip.git (master) completed! -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/479] Analyzing https://github.com/yuxunn/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/479] Analyzing https://github.com/yuxunn/ip.git (master)... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RB9823/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/howenc/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cxo05/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yuxunn/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:13:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yuxunn/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kurtyjlee/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shyanyong/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/josepholim/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TyrusLye/ip.git completed! +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/josepholim/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... +Aug 28, 2023 1:13:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/siqirua/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/siqirua/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yuxunn/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/siqirua/ip.git (master) completed! +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/479] Analyzing https://github.com/ph-nathan/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yuxunn/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yuxunn/ip.git (master) completed! -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RB9823/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/479] Analyzing https://github.com/butteredyakiimo/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ph-nathan/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ph-nathan/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/butteredyakiimo/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/butteredyakiimo/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ph-nathan/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ph-nathan/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ph-nathan/ip.git (master) completed! +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [9/479] Analyzing https://github.com/RB9823/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/howenc/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/howenc/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TyrusLye/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/479] Analyzing https://github.com/TyrusLye/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kurtyjlee/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/butteredyakiimo/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RB9823/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RB9823/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kurtyjlee/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cxo05/ip.git completed! -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/josepholim/ip.git... -Aug 27, 2023 4:47:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/josepholim/ip.git to complete... -Aug 27, 2023 4:47:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shyanyong/ip.git completed! -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/geoffong11/ip.git... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/geoffong11/ip.git to complete... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/geoffong11/ip.git completed! +Aug 28, 2023 1:14:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/butteredyakiimo/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/josepholim/ip.git completed! +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/butteredyakiimo/ip.git (master) completed! +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/479] Analyzing https://github.com/cxo05/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/howenc/ip.git completed! +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/A1WAYSD/ip.git to complete... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... +Aug 28, 2023 1:14:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... +Aug 28, 2023 1:14:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RB9823/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/479] Analyzing https://github.com/cxo05/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RB9823/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RB9823/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/479] Analyzing https://github.com/shyanyong/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cxo05/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cxo05/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/479] Analyzing https://github.com/shyanyong/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shyanyong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shyanyong/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cxo05/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cxo05/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cxo05/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/josepholim/ip.git completed! -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/479] Analyzing https://github.com/josepholim/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jianrong7/ip.git... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/howenc/ip.git completed! -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jianrong7/ip.git to complete... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kurtyjlee/ip.git completed! -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/A1WAYSD/ip.git... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [14/479] Analyzing https://github.com/howenc/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/479] Analyzing https://github.com/TyrusLye/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TyrusLye/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TyrusLye/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shyanyong/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jianrong7/ip.git completed! +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limjunxian1/ip.git completed! +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dishenggg/ip.git... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shyanyong/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NgChunMan/ip.git completed! +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dishenggg/ip.git to complete... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shyanyong/ip.git (master) completed! +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/479] Analyzing https://github.com/geoffong11/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhyuhan/ip.git... +Aug 28, 2023 1:14:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhyuhan/ip.git to complete... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TyrusLye/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TyrusLye/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TyrusLye/ip.git (master) completed! +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/479] Analyzing https://github.com/josepholim/ip.git (master)... +Aug 28, 2023 1:14:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/josepholim/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/josepholim/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/NgChunMan/ip.git... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NgChunMan/ip.git to complete... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/A1WAYSD/ip.git to complete... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/479] Analyzing https://github.com/howenc/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jack1e0/ip.git completed! +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Dioclei/ip.git to complete... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjoneweek/ip.git completed! +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/howenc/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/howenc/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/geoffong11/ip.git completed! -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/limjunxian1/ip.git... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/limjunxian1/ip.git to complete... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dishenggg/ip.git completed! +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Daphne789/ip.git... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WinstonLeonard/ip.git... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhyuhan/ip.git completed! +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WinstonLeonard/ip.git to complete... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peiran18/ip.git... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/josepholim/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howenc/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [15/479] Analyzing https://github.com/Kurtyjlee/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/josepholim/ip.git (master)... -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/josepholim/ip.git (master) completed! -Aug 27, 2023 4:47:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [16/479] Analyzing https://github.com/geoffong11/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/geoffong11/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/geoffong11/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/479] Analyzing https://github.com/Kurtyjlee/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/howenc/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kurtyjlee/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kurtyjlee/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howenc/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howenc/ip.git (master) completed! +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/479] Analyzing https://github.com/limjunxian1/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kurtyjlee/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kurtyjlee/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kurtyjlee/ip.git (master) completed! -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/geoffong11/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/geoffong11/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/geoffong11/ip.git (master) completed! -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jianrong7/ip.git completed! -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jack1e0/ip.git... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [17/479] Analyzing https://github.com/jianrong7/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/A1WAYSD/ip.git completed! -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NgChunMan/ip.git completed! -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jack1e0/ip.git to complete... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [18/479] Analyzing https://github.com/NgChunMan/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hjoneweek/ip.git... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dishenggg/ip.git... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/479] Analyzing https://github.com/jianrong7/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jianrong7/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jianrong7/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hjoneweek/ip.git to complete... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dishenggg/ip.git to complete... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limjunxian1/ip.git completed! -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhyuhan/ip.git... -Aug 27, 2023 4:47:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhyuhan/ip.git to complete... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... +Aug 28, 2023 1:14:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dioclei/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/migfoo02/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [19/479] Analyzing https://github.com/A1WAYSD/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [20/479] Analyzing https://github.com/limjunxian1/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/migfoo02/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Daphne789/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peiran18/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/A1WAYSD/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/A1WAYSD/ip.git (master)... -Aug 27, 2023 4:47:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/limjunxian1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/limjunxian1/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jonyxzx/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jonyxzx/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/A1WAYSD/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jianrong7/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/A1WAYSD/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/A1WAYSD/ip.git (master) completed! -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limjunxian1/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limjunxian1/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limjunxian1/ip.git (master) completed! -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dishenggg/ip.git completed! -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Dioclei/ip.git... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [21/479] Analyzing https://github.com/dishenggg/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Dioclei/ip.git to complete... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jack1e0/ip.git completed! -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Daphne789/ip.git... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [22/479] Analyzing https://github.com/jack1e0/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Daphne789/ip.git to complete... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/479] Analyzing https://github.com/NgChunMan/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jianrong7/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jianrong7/ip.git (master) completed! +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/479] Analyzing https://github.com/jack1e0/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NgChunMan/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NgChunMan/ip.git (master)... +Aug 28, 2023 1:14:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jack1e0/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jack1e0/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjoneweek/ip.git completed! -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WinstonLeonard/ip.git... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WinstonLeonard/ip.git to complete... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhyuhan/ip.git completed! -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peiran18/ip.git... -Aug 27, 2023 4:47:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peiran18/ip.git to complete... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AriellaCallista/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/migfoo02/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Darren159/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/imkwokyong/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joeng03/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vijay-shankaranand/ip.git... +Aug 28, 2023 1:14:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vijay-shankaranand/ip.git to complete... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NgChunMan/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NgChunMan/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NgChunMan/ip.git (master) completed! +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/479] Analyzing https://github.com/dishenggg/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dishenggg/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dishenggg/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dishenggg/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [23/479] Analyzing https://github.com/hjoneweek/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hjoneweek/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hjoneweek/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jack1e0/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dishenggg/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dishenggg/ip.git (master) completed! +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [24/479] Analyzing https://github.com/zhyuhan/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhyuhan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhyuhan/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jack1e0/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jack1e0/ip.git (master) completed! -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darren159/ip.git completed! +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/imkwokyong/ip.git completed! +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jeffrey-jian/ip.git... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjoneweek/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/joeng03/ip.git completed! +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanyyyming/ip.git... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjoneweek/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjoneweek/ip.git (master) completed! +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/479] Analyzing https://github.com/Dioclei/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... +Aug 28, 2023 1:14:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JCSnap/ip.git to complete... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhyuhan/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhyuhan/ip.git (master)... -Aug 27, 2023 4:47:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhyuhan/ip.git (master) completed! -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Daphne789/ip.git completed! -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [25/479] Analyzing https://github.com/Daphne789/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AriellaCallista/ip.git... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AriellaCallista/ip.git to complete... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dioclei/ip.git completed! -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [26/479] Analyzing https://github.com/Dioclei/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/migfoo02/ip.git... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/migfoo02/ip.git to complete... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dioclei/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dioclei/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinstonLeonard/ip.git completed! -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peiran18/ip.git completed! -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jonyxzx/ip.git... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jonyxzx/ip.git to complete... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SynapseProgramming/ip.git... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SynapseProgramming/ip.git to complete... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [27/479] Analyzing https://github.com/WinstonLeonard/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/479] Analyzing https://github.com/WinstonLeonard/ip.git (master)... +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WinstonLeonard/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WinstonLeonard/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Dioclei/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Dioclei/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Dioclei/ip.git (master) completed! -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [28/479] Analyzing https://github.com/peiran18/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/479] Analyzing https://github.com/Daphne789/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Daphne789/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Daphne789/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WinstonLeonard/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WinstonLeonard/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WinstonLeonard/ip.git (master) completed! -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/479] Analyzing https://github.com/peiran18/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peiran18/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peiran18/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jeffrey-jian/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SelwynAng/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/woojiahao/ip.git... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanyyyming/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peiran18/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JCSnap/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/syamfarh/ip.git... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Daphne789/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peiran18/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peiran18/ip.git (master) completed! -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AriellaCallista/ip.git completed! -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Darren159/ip.git... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [29/479] Analyzing https://github.com/AriellaCallista/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darren159/ip.git to complete... -Aug 27, 2023 4:47:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/syamfarh/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Daphne789/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Daphne789/ip.git (master) completed! +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/479] Analyzing https://github.com/migfoo02/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AriellaCallista/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AriellaCallista/ip.git (master)... -Aug 27, 2023 4:47:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/migfoo02/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [30/479] Analyzing https://github.com/migfoo02/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/imkwokyong/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/imkwokyong/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jonyxzx/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SynapseProgramming/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [31/479] Analyzing https://github.com/Jonyxzx/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joeng03/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vijay-shankaranand/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/migfoo02/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/migfoo02/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joeng03/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vijay-shankaranand/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AriellaCallista/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/migfoo02/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AriellaCallista/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AriellaCallista/ip.git (master) completed! +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/479] Analyzing https://github.com/SynapseProgramming/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/migfoo02/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/migfoo02/ip.git (master) completed! -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [32/479] Analyzing https://github.com/SynapseProgramming/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/479] Analyzing https://github.com/Jonyxzx/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SynapseProgramming/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SynapseProgramming/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jonyxzx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jonyxzx/ip.git (master)... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AprupKale/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/woojiahao/ip.git completed! +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/coderhuang559/ip.git... +Aug 28, 2023 1:14:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/coderhuang559/ip.git to complete... +Aug 28, 2023 1:14:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SynapseProgramming/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SynapseProgramming/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SynapseProgramming/ip.git (master) completed! -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darren159/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SelwynAng/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [33/479] Analyzing https://github.com/Darren159/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SelwynAng/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jonyxzx/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jonyxzx/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jonyxzx/ip.git (master) completed! +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/479] Analyzing https://github.com/imkwokyong/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PetrichorPrecipice/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Darren159/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Darren159/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vijay-shankaranand/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/joeng03/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/syamfarh/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Darren159/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/imkwokyong/ip.git completed! -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jeffrey-jian/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [34/479] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanyyyming/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanyyyming/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JCSnap/ip.git... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jeffrey-jian/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JCSnap/ip.git to complete... -Aug 27, 2023 4:47:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Darren159/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Darren159/ip.git (master) completed! -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [35/479] Analyzing https://github.com/imkwokyong/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... -Aug 27, 2023 4:47:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/imkwokyong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/imkwokyong/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [36/479] Analyzing https://github.com/joeng03/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/479] Analyzing https://github.com/joeng03/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/joeng03/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/joeng03/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/imkwokyong/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/imkwokyong/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/imkwokyong/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/479] Analyzing https://github.com/vijay-shankaranand/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vijay-shankaranand/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vijay-shankaranand/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/D-Limiter/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joeng03/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/phiphi-tan/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/joeng03/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/joeng03/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SelwynAng/ip.git completed! -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AprupKale/ip.git... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [37/479] Analyzing https://github.com/SelwynAng/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AprupKale/ip.git to complete... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/coderhuang559/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ktzy0305/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SelwynAng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SelwynAng/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pra-navi/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LordSaumya/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LordSaumya/ip.git to complete... +Aug 28, 2023 1:14:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vijay-shankaranand/ip.git (master)... +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vijay-shankaranand/ip.git (master) completed! +Aug 28, 2023 1:14:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/479] Analyzing https://github.com/jeffrey-jian/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SelwynAng/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SelwynAng/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SelwynAng/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanyyyming/ip.git completed! -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [38/479] Analyzing https://github.com/tanyyyming/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/woojiahao/ip.git... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/woojiahao/ip.git to complete... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/479] Analyzing https://github.com/tanyyyming/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanyyyming/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanyyyming/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jeffrey-jian/ip.git completed! -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PetrichorPrecipice/ip.git... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [39/479] Analyzing https://github.com/jeffrey-jian/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PetrichorPrecipice/ip.git to complete... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JCSnap/ip.git completed! -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeffrey-jian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeffrey-jian/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/syamfarh/ip.git... -Aug 27, 2023 4:47:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/syamfarh/ip.git to complete... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/phiphi-tan/ip.git completed! +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jeffrey-jian/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jeffrey-jian/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyyyming/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jeffrey-jian/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [40/479] Analyzing https://github.com/JCSnap/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanyyyming/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanyyyming/ip.git (master) completed! -Aug 27, 2023 4:47:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/479] Analyzing https://github.com/AprupKale/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JCSnap/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JCSnap/ip.git (master)... -Aug 27, 2023 4:47:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AprupKale/ip.git completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/D-Limiter/ip.git... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [41/479] Analyzing https://github.com/AprupKale/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/D-Limiter/ip.git to complete... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ktzy0305/ip.git completed! +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/johnnythesnake12/ip.git... +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AprupKale/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AprupKale/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LordSaumya/ip.git completed! +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chen1x/ip.git completed! +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/p-xp/ip.git... +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JCSnap/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AprupKale/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JCSnap/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JCSnap/ip.git (master) completed! +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/479] Analyzing https://github.com/woojiahao/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AprupKale/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AprupKale/ip.git (master) completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/woojiahao/ip.git completed! -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [42/479] Analyzing https://github.com/woojiahao/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/coderhuang559/ip.git... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/coderhuang559/ip.git to complete... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/479] Analyzing https://github.com/syamfarh/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/woojiahao/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/woojiahao/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PetrichorPrecipice/ip.git completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LINCHENYU2030S/ip.git... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [43/479] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/syamfarh/ip.git completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LINCHENYU2030S/ip.git to complete... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pra-navi/ip.git... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/pra-navi/ip.git to complete... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [44/479] Analyzing https://github.com/syamfarh/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/syamfarh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/syamfarh/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/woojiahao/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/syamfarh/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! -Aug 27, 2023 4:47:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/woojiahao/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/woojiahao/ip.git (master) completed! +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/479] Analyzing https://github.com/PetrichorPrecipice/ip.git (master)... +Aug 28, 2023 1:14:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/syamfarh/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/syamfarh/ip.git (master) completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/D-Limiter/ip.git completed! -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/phiphi-tan/ip.git... -Aug 27, 2023 4:47:34 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [45/479] Analyzing https://github.com/D-Limiter/ip.git (master)... -Aug 27, 2023 4:47:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/phiphi-tan/ip.git to complete... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yanghengtang/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/matochichap/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PetrichorPrecipice/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PetrichorPrecipice/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/D-Limiter/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/D-Limiter/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/matochichap/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/johnnythesnake12/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/oeggy03/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/p-xp/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/applepiofmyeye/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ScarletBlanks/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ScarletBlanks/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/D-Limiter/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/D-Limiter/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/D-Limiter/ip.git (master) completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/coderhuang559/ip.git completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ktzy0305/ip.git... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/479] Analyzing https://github.com/coderhuang559/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ktzy0305/ip.git to complete... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PetrichorPrecipice/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PetrichorPrecipice/ip.git (master) completed! +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/479] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/coderhuang559/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/coderhuang559/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LINCHENYU2030S/ip.git completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LordSaumya/ip.git... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [47/479] Analyzing https://github.com/LINCHENYU2030S/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pra-navi/ip.git completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LordSaumya/ip.git to complete... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chen1x/ip.git... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LINCHENYU2030S/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LINCHENYU2030S/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chen1x/ip.git to complete... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LINCHENYU2030S/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LINCHENYU2030S/ip.git (master) completed! -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [48/479] Analyzing https://github.com/pra-navi/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pra-navi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pra-navi/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/coderhuang559/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/coderhuang559/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/coderhuang559/ip.git (master) completed! +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/479] Analyzing https://github.com/phiphi-tan/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/pra-navi/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/pra-navi/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/pra-navi/ip.git (master) completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/phiphi-tan/ip.git completed! -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [49/479] Analyzing https://github.com/phiphi-tan/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yanghengtang/ip.git... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yanghengtang/ip.git to complete... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/479] Analyzing https://github.com/ktzy0305/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... +Aug 28, 2023 1:14:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/phiphi-tan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/phiphi-tan/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/matochichap/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chiayunrong/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chiayunrong/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TiwKangXu/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/devanshubisht/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jx124/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Clin-lyx/ip.git... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Clin-lyx/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... +Aug 28, 2023 1:14:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/phiphi-tan/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/phiphi-tan/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/phiphi-tan/ip.git (master) completed! -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ktzy0305/ip.git completed! -Aug 27, 2023 4:47:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [50/479] Analyzing https://github.com/ktzy0305/ip.git (master)... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/johnnythesnake12/ip.git... -Aug 27, 2023 4:47:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/johnnythesnake12/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ktzy0305/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ktzy0305/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LordSaumya/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [51/479] Analyzing https://github.com/LordSaumya/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/oeggy03/ip.git... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/oeggy03/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chen1x/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/p-xp/ip.git... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/p-xp/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ktzy0305/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [52/479] Analyzing https://github.com/Chen1x/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ktzy0305/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ktzy0305/ip.git (master) completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/479] Analyzing https://github.com/Chen1x/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LordSaumya/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LordSaumya/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chen1x/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chen1x/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chen1x/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LordSaumya/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chen1x/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chen1x/ip.git (master) completed! -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yanghengtang/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [53/479] Analyzing https://github.com/yanghengtang/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/matochichap/ip.git... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/matochichap/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LordSaumya/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LordSaumya/ip.git (master) completed! +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/479] Analyzing https://github.com/oeggy03/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yanghengtang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yanghengtang/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiayunrong/ip.git completed! +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jx124/ip.git completed! +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/devanshubisht/ip.git completed! +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kayabuttertoastt/ip.git... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sheryew/ip.git... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jonasongg/ip.git... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sheryew/ip.git to complete... +Aug 28, 2023 1:14:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yanghengtang/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/479] Analyzing https://github.com/johnnythesnake12/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yanghengtang/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yanghengtang/ip.git (master) completed! -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/johnnythesnake12/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [54/479] Analyzing https://github.com/johnnythesnake12/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/applepiofmyeye/ip.git... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/applepiofmyeye/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/479] Analyzing https://github.com/p-xp/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/johnnythesnake12/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/johnnythesnake12/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/oeggy03/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [55/479] Analyzing https://github.com/oeggy03/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TiwKangXu/ip.git... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/johnnythesnake12/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TiwKangXu/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/johnnythesnake12/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/johnnythesnake12/ip.git (master) completed! -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/oeggy03/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/oeggy03/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/p-xp/ip.git completed! -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ScarletBlanks/ip.git... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [56/479] Analyzing https://github.com/p-xp/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ScarletBlanks/ip.git to complete... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/oeggy03/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/p-xp/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/p-xp/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/oeggy03/ip.git (master)... -Aug 27, 2023 4:47:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/oeggy03/ip.git (master) completed! -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/matochichap/ip.git completed! -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chiayunrong/ip.git... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [57/479] Analyzing https://github.com/matochichap/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chiayunrong/ip.git to complete... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/p-xp/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/matochichap/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/matochichap/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/applepiofmyeye/ip.git completed! -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/devanshubisht/ip.git... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/p-xp/ip.git (master)... +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/p-xp/ip.git (master) completed! +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [58/479] Analyzing https://github.com/applepiofmyeye/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/devanshubisht/ip.git to complete... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/applepiofmyeye/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/applepiofmyeye/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TiwKangXu/ip.git completed! -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [59/479] Analyzing https://github.com/TiwKangXu/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jx124/ip.git... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ScarletBlanks/ip.git completed! -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jx124/ip.git to complete... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Clin-lyx/ip.git... -Aug 27, 2023 4:47:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Clin-lyx/ip.git to complete... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/applepiofmyeye/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/applepiofmyeye/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/applepiofmyeye/ip.git (master) completed! -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/479] Analyzing https://github.com/TiwKangXu/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TiwKangXu/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TiwKangXu/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matochichap/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matochichap/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matochichap/ip.git (master) completed! +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [60/479] Analyzing https://github.com/ScarletBlanks/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TiwKangXu/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AryanG01/ip.git completed! +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TiwKangXu/ip.git (master)... -Aug 27, 2023 4:47:37 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ScarletBlanks/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ScarletBlanks/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sheryew/ip.git completed! +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TiwKangXu/ip.git (master) completed! -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiayunrong/ip.git completed! -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AryanG01/ip.git... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonasongg/ip.git completed! +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [61/479] Analyzing https://github.com/chiayunrong/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AryanG01/ip.git to complete... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/supermii2/ip.git... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chuababyy/ip.git to complete... +Aug 28, 2023 1:14:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/supermii2/ip.git to complete... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chiayunrong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chiayunrong/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ScarletBlanks/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ScarletBlanks/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ScarletBlanks/ip.git (master) completed! +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/479] Analyzing https://github.com/jx124/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jx124/ip.git (master) completed! +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/479] Analyzing https://github.com/devanshubisht/ip.git (master)... +Aug 28, 2023 1:14:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chiayunrong/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chiayunrong/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chiayunrong/ip.git (master) completed! -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/devanshubisht/ip.git completed! -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [62/479] Analyzing https://github.com/devanshubisht/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kayabuttertoastt/ip.git... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kayabuttertoastt/ip.git to complete... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/devanshubisht/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/devanshubisht/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jx124/ip.git completed! -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sheryew/ip.git... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [63/479] Analyzing https://github.com/jx124/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sheryew/ip.git to complete... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Clin-lyx/ip.git completed! -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jx124/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jx124/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jonasongg/ip.git... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonasongg/ip.git to complete... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [64/479] Analyzing https://github.com/Clin-lyx/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jx124/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/devanshubisht/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Clin-lyx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Clin-lyx/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jx124/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jx124/ip.git (master) completed! -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/devanshubisht/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/devanshubisht/ip.git (master) completed! +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/479] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tiongMax/ip.git completed! +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/remuslum/ip.git... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/supermii2/ip.git completed! +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chuababyy/ip.git completed! +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yiwen101/ip.git completed! +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kanna-1/ip.git... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kanna-1/ip.git to complete... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicolengk/ip.git... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/newway1814/ip.git... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/newway1814/ip.git to complete... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Clin-lyx/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Clin-lyx/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Clin-lyx/ip.git (master) completed! -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AryanG01/ip.git completed! -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [65/479] Analyzing https://github.com/AryanG01/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yiwen101/ip.git... -Aug 27, 2023 4:47:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yiwen101/ip.git to complete... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... -Aug 27, 2023 4:47:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sheryew/ip.git completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiongMax/ip.git... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [66/479] Analyzing https://github.com/sheryew/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiongMax/ip.git to complete... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kayabuttertoastt/ip.git completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chuababyy/ip.git... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [67/479] Analyzing https://github.com/kayabuttertoastt/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chuababyy/ip.git to complete... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kayabuttertoastt/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kayabuttertoastt/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonasongg/ip.git completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/supermii2/ip.git... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/supermii2/ip.git to complete... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/479] Analyzing https://github.com/jonasongg/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [68/479] Analyzing https://github.com/jonasongg/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kayabuttertoastt/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kayabuttertoastt/ip.git (master) completed! -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonasongg/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonasongg/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/479] Analyzing https://github.com/sheryew/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sheryew/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sheryew/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jonasongg/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jonasongg/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jonasongg/ip.git (master) completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yiwen101/ip.git completed! -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [69/479] Analyzing https://github.com/yiwen101/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/remuslum/ip.git... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/remuslum/ip.git to complete... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tiongMax/ip.git completed! -Aug 27, 2023 4:47:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [70/479] Analyzing https://github.com/tiongMax/ip.git (master)... -Aug 27, 2023 4:47:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kanna-1/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kanna-1/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/479] Analyzing https://github.com/AryanG01/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AryanG01/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AryanG01/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sheryew/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sheryew/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sheryew/ip.git (master) completed! +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/479] Analyzing https://github.com/tiongMax/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tiongMax/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tiongMax/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chuababyy/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [71/479] Analyzing https://github.com/chuababyy/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicolengk/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicolengk/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/supermii2/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/newway1814/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/newway1814/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AryanG01/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AryanG01/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AryanG01/ip.git (master) completed! +Aug 28, 2023 1:14:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/479] Analyzing https://github.com/yiwen101/ip.git (master)... +Aug 28, 2023 1:14:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/remuslum/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicolengk/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yiwen101/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yiwen101/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/glenngnng/ip.git... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/glenngnng/ip.git to complete... +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiongMax/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kanna-1/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/newway1814/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mingyuanc/ip.git... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LamJiuFong/ip.git... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiongMax/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiongMax/ip.git (master) completed! -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [72/479] Analyzing https://github.com/supermii2/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/479] Analyzing https://github.com/supermii2/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/supermii2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/supermii2/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/supermii2/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yiwen101/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/supermii2/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yiwen101/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/supermii2/ip.git (master) completed! -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/remuslum/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/glenngnng/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yiwen101/ip.git (master) completed! +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/479] Analyzing https://github.com/chuababyy/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [73/479] Analyzing https://github.com/remuslum/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/glenngnng/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chuababyy/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chuababyy/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/remuslum/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/remuslum/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chuababyy/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/remuslum/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/remuslum/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chuababyy/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chuababyy/ip.git (master) completed! +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/remuslum/ip.git (master) completed! -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicolengk/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [74/479] Analyzing https://github.com/nicolengk/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zsh-eng/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zsh-eng/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kanna-1/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mingyuanc/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/479] Analyzing https://github.com/kanna-1/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicolengk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicolengk/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mingyuanc/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/newway1814/ip.git completed! -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LamJiuFong/ip.git... -Aug 27, 2023 4:47:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LamJiuFong/ip.git to complete... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... -Aug 27, 2023 4:47:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [76/479] Analyzing https://github.com/newway1814/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/glenngnng/ip.git completed! -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [77/479] Analyzing https://github.com/glenngnng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GlendaChong/ip.git... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kanna-1/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kanna-1/ip.git (master)... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GlendaChong/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zsh-eng/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/mingyuanc/ip.git completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/starrylight99/ip.git... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [78/479] Analyzing https://github.com/mingyuanc/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/starrylight99/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zsh-eng/ip.git completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AustinHuang1203/ip.git... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [79/479] Analyzing https://github.com/zsh-eng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AustinHuang1203/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LamJiuFong/ip.git completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seewhyjay/ip.git... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/starrylight99/ip.git to complete... +Aug 28, 2023 1:14:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seewhyjay/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [80/479] Analyzing https://github.com/LamJiuFong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicolengk/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicolengk/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "starrylight99/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/starrylight99/ip.git' 'repos/starrylight99_ip/ip_bare' on path . : Cloning into bare repository 'repos/starrylight99_ip/ip_bare'... @@ -1524,2561 +1468,2613 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruth-lim/ip.git... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicolengk/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/479] Analyzing https://github.com/newway1814/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruth-lim/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kanna-1/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/newway1814/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/newway1814/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kanna-1/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kanna-1/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/479] Analyzing https://github.com/glenngnng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/glenngnng/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/glenngnng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/newway1814/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/newway1814/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/newway1814/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/479] Analyzing https://github.com/zsh-eng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/glenngnng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zsh-eng/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zsh-eng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/glenngnng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/glenngnng/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/479] Analyzing https://github.com/mingyuanc/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyuanc/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyuanc/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/GlendaChong/ip.git completed! -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limzhenwy/ip.git... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [81/479] Analyzing https://github.com/GlendaChong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limzhenwy/ip.git to complete... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... -Aug 27, 2023 4:47:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AustinHuang1203/ip.git completed! -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xCOLOURx/ip.git... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [82/479] Analyzing https://github.com/AustinHuang1203/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xCOLOURx/ip.git to complete... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seewhyjay/ip.git completed! -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [83/479] Analyzing https://github.com/seewhyjay/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zacwong2151/ip.git... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zacwong2151/ip.git to complete... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zsh-eng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zsh-eng/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zsh-eng/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/479] Analyzing https://github.com/LamJiuFong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LamJiuFong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LamJiuFong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruth-lim/ip.git completed! +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyuanc/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyuanc/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyuanc/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/479] Analyzing https://github.com/GlendaChong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GlendaChong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GlendaChong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GlendaChong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GlendaChong/ip.git (master)... +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GlendaChong/ip.git (master) completed! +Aug 28, 2023 1:14:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/479] Analyzing https://github.com/AustinHuang1203/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AustinHuang1203/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AustinHuang1203/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LamJiuFong/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LamJiuFong/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LamJiuFong/ip.git (master) completed! +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/479] Analyzing https://github.com/seewhyjay/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limzhenwy/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/awhb/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/awhb/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seewhyjay/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seewhyjay/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruth-lim/ip.git completed! -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Zjinnnn/ip.git... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Zjinnnn/ip.git to complete... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teoks0199/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zacwong2151/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qz1004/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seewhyjay/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seewhyjay/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seewhyjay/ip.git (master) completed! -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [84/479] Analyzing https://github.com/ruth-lim/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruth-lim/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruth-lim/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Zjinnnn/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AustinHuang1203/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AustinHuang1203/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AustinHuang1203/ip.git (master) completed! -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limzhenwy/ip.git completed! -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [85/479] Analyzing https://github.com/limzhenwy/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/awhb/ip.git... -Aug 27, 2023 4:47:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/awhb/ip.git to complete... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/limzhenwy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/limzhenwy/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/limzhenwy/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruth-lim/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/limzhenwy/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/limzhenwy/ip.git (master) completed! -Aug 27, 2023 4:47:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [86/479] Analyzing https://github.com/xCOLOURx/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruth-lim/ip.git (master)... -Aug 27, 2023 4:47:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruth-lim/ip.git (master) completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xCOLOURx/ip.git completed! -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [86/479] Analyzing https://github.com/xCOLOURx/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teoks0199/ip.git... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teoks0199/ip.git to complete... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/479] Analyzing https://github.com/zacwong2151/ip.git (master)... +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xCOLOURx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xCOLOURx/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zacwong2151/ip.git completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qz1004/ip.git... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [87/479] Analyzing https://github.com/zacwong2151/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qz1004/ip.git to complete... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zacwong2151/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zacwong2151/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/awhb/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Mahidharah/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zacwong2151/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zacwong2151/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Zjinnnn/ip.git completed! -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zacwong2151/ip.git (master) completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/pangyyen/ip.git... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/479] Analyzing https://github.com/Zjinnnn/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/pangyyen/ip.git to complete... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teoks0199/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qz1004/ip.git completed! +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jason-raiin/ip.git to complete... +Aug 28, 2023 1:14:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ravern/ip.git... +Aug 28, 2023 1:14:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Zjinnnn/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Zjinnnn/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/awhb/ip.git completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mahidharah/ip.git... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xCOLOURx/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ravern/ip.git to complete... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xCOLOURx/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xCOLOURx/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [89/479] Analyzing https://github.com/awhb/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Mahidharah/ip.git to complete... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pangyyen/ip.git completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/awhb/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/awhb/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/awhb/ip.git (master) completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teoks0199/ip.git completed! -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jason-raiin/ip.git... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bobscodedump/ip.git to complete... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zjinnnn/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zjinnnn/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zjinnnn/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [90/479] Analyzing https://github.com/teoks0199/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jason-raiin/ip.git to complete... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/awhb/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teoks0199/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teoks0199/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... -Aug 27, 2023 4:47:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qz1004/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/awhb/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/awhb/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [91/479] Analyzing https://github.com/qz1004/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ravern/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ravern/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qz1004/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qz1004/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pangyyen/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teoks0199/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teoks0199/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teoks0199/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mahidharah/ip.git completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [92/479] Analyzing https://github.com/pangyyen/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bobscodedump/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bobscodedump/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qz1004/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/pangyyen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/pangyyen/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mahidharah/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nixonwidjaja/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [93/479] Analyzing https://github.com/Mahidharah/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nixonwidjaja/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qz1004/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qz1004/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [93/479] Analyzing https://github.com/Mahidharah/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jason-raiin/ip.git completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Mahidharah/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Mahidharah/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jason-raiin/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [94/479] Analyzing https://github.com/jason-raiin/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/techjay-c/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/techjay-c/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ravern/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [95/479] Analyzing https://github.com/ravern/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryanozx/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryanozx/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bobscodedump/ip.git completed! +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HEEaZ/ip.git... +Aug 28, 2023 1:14:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pangyyen/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mahidharah/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pangyyen/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pangyyen/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/479] Analyzing https://github.com/jason-raiin/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mahidharah/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mahidharah/ip.git (master) completed! +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [95/479] Analyzing https://github.com/ravern/ip.git (master)... +Aug 28, 2023 1:14:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jason-raiin/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jason-raiin/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ravern/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ravern/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jason-raiin/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jason-raiin/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jason-raiin/ip.git (master) completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bobscodedump/ip.git completed! -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HEEaZ/ip.git... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/479] Analyzing https://github.com/bobscodedump/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HEEaZ/ip.git to complete... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bobscodedump/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bobscodedump/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/techjay-c/ip.git completed! +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ravern/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlainS87/ip.git... +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ravern/ip.git (master)... -Aug 27, 2023 4:47:44 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlainS87/ip.git to complete... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ravern/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nixonwidjaja/ip.git completed! -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [97/479] Analyzing https://github.com/nixonwidjaja/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dom-buri/ip.git... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dom-buri/ip.git to complete... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanozx/ip.git completed! +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HEEaZ/ip.git completed! +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiongjjyi/ip.git to complete... +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Vanessamae23/ip.git... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nixonwidjaja/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nixonwidjaja/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/techjay-c/ip.git completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlainS87/ip.git... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bobscodedump/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bobscodedump/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bobscodedump/ip.git (master) completed! +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/479] Analyzing https://github.com/techjay-c/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlainS87/ip.git to complete... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/techjay-c/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/techjay-c/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanozx/ip.git completed! -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nixonwidjaja/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nixonwidjaja/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nixonwidjaja/ip.git (master) completed! +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [99/479] Analyzing https://github.com/ryanozx/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiongjjyi/ip.git... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiongjjyi/ip.git to complete... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/techjay-c/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryanozx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryanozx/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HEEaZ/ip.git completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Vanessamae23/ip.git... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/techjay-c/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/techjay-c/ip.git (master) completed! +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [100/479] Analyzing https://github.com/HEEaZ/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Vanessamae23/ip.git to complete... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HEEaZ/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HEEaZ/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanozx/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanozx/ip.git (master)... +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanozx/ip.git (master) completed! +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HEEaZ/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HEEaZ/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HEEaZ/ip.git (master) completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dom-buri/ip.git completed! -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [101/479] Analyzing https://github.com/dom-buri/ip.git (master)... -Aug 27, 2023 4:47:45 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/fuyiqiao/ip.git... +Aug 28, 2023 1:14:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fuyiqiao/ip.git to complete... -Aug 27, 2023 4:47:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dom-buri/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dom-buri/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tiongjjyi/ip.git completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlainS87/ip.git completed! +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/spatuly/ip.git... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [102/479] Analyzing https://github.com/tiongjjyi/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Vanessamae23/ip.git completed! +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/spatuly/ip.git to complete... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlainS87/ip.git completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanshiyu1999/ip.git... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [103/479] Analyzing https://github.com/AlainS87/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kb-Tay/ip.git to complete... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanshiyu1999/ip.git to complete... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tiongjjyi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tiongjjyi/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dom-buri/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dom-buri/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dom-buri/ip.git (master) completed! +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/479] Analyzing https://github.com/AlainS87/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlainS87/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlainS87/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiongjjyi/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiongjjyi/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiongjjyi/ip.git (master) completed! -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Vanessamae23/ip.git completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kb-Tay/ip.git... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [104/479] Analyzing https://github.com/Vanessamae23/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kb-Tay/ip.git to complete... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Vanessamae23/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Vanessamae23/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlainS87/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlainS87/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlainS87/ip.git (master) completed! +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Vanessamae23/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Vanessamae23/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Vanessamae23/ip.git (master) completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/fuyiqiao/ip.git completed! -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [105/479] Analyzing https://github.com/fuyiqiao/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beatricecst/ip.git... -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/479] Analyzing https://github.com/fuyiqiao/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beatricecst/ip.git to complete... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/fuyiqiao/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/fuyiqiao/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/fuyiqiao/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/fuyiqiao/ip.git (master)... -Aug 27, 2023 4:47:46 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/fuyiqiao/ip.git (master) completed! -Aug 27, 2023 4:47:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/spatuly/ip.git completed! +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanshiyu1999/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [106/479] Analyzing https://github.com/tanshiyu1999/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/479] Analyzing https://github.com/Kb-Tay/ip.git (master)... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanveersingh10/ip.git... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanveersingh10/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/spatuly/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [107/479] Analyzing https://github.com/spatuly/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thienmy0/ip.git... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanveersingh10/ip.git to complete... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/s0ngyang/ip.git... +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thienmy0/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/s0ngyang/ip.git to complete... +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/spatuly/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/spatuly/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/spatuly/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/spatuly/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/spatuly/ip.git (master) completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kb-Tay/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/s0ngyang/ip.git... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [108/479] Analyzing https://github.com/Kb-Tay/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/s0ngyang/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kb-Tay/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kb-Tay/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [108/479] Analyzing https://github.com/tanshiyu1999/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kb-Tay/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kb-Tay/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kb-Tay/ip.git (master) completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanshiyu1999/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanshiyu1999/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beatricecst/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ldinghan/ip.git... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [109/479] Analyzing https://github.com/beatricecst/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ldinghan/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/beatricecst/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/beatricecst/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanshiyu1999/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanshiyu1999/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanshiyu1999/ip.git (master) completed! +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/beatricecst/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/beatricecst/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/beatricecst/ip.git (master) completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [110/479] Analyzing https://github.com/tanveersingh10/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thienmy0/ip.git completed! +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/feifeiraindrops/ip.git... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [110/479] Analyzing https://github.com/thienmy0/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/feifeiraindrops/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thienmy0/ip.git completed! -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [111/479] Analyzing https://github.com/thienmy0/ip.git (master)... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... -Aug 27, 2023 4:47:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... -Aug 27, 2023 4:47:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/thienmy0/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/thienmy0/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanveersingh10/ip.git completed! +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryanongwx/ip.git... +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [111/479] Analyzing https://github.com/tanveersingh10/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryanongwx/ip.git to complete... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/s0ngyang/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [112/479] Analyzing https://github.com/s0ngyang/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanveersingh10/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanveersingh10/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kwangthiag/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kwangthiag/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ldinghan/ip.git completed! +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/thienmy0/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/elhy1999/ip.git... +Aug 28, 2023 1:14:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/thienmy0/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/thienmy0/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ldinghan/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/elhy1999/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [112/479] Analyzing https://github.com/s0ngyang/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/s0ngyang/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/s0ngyang/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanveersingh10/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanveersingh10/ip.git (master)... +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanveersingh10/ip.git (master) completed! +Aug 28, 2023 1:14:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [113/479] Analyzing https://github.com/ldinghan/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/elhy1999/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ldinghan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ldinghan/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s0ngyang/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s0ngyang/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s0ngyang/ip.git (master) completed! +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/feifeiraindrops/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [114/479] Analyzing https://github.com/feifeiraindrops/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/songgthu/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/songgthu/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/feifeiraindrops/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/feifeiraindrops/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryanongwx/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [115/479] Analyzing https://github.com/ryanongwx/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GohTengFong/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GohTengFong/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ldinghan/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kwangthiag/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/simbayippy/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [116/479] Analyzing https://github.com/kwangthiag/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/simbayippy/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ldinghan/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ldinghan/ip.git (master) completed! +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [115/479] Analyzing https://github.com/ryanongwx/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/feifeiraindrops/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanongwx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanongwx/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/feifeiraindrops/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/feifeiraindrops/ip.git (master) completed! +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/479] Analyzing https://github.com/kwangthiag/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kwangthiag/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kwangthiag/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/elhy1999/ip.git completed! -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Khaleelur-Rahman/ip.git... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Khaleelur-Rahman/ip.git to complete... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanongwx/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanongwx/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanongwx/ip.git (master) completed! +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [117/479] Analyzing https://github.com/elhy1999/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kwangthiag/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! -Aug 27, 2023 4:47:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/elhy1999/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/elhy1999/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwangthiag/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwangthiag/ip.git (master) completed! +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/elhy1999/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/elhy1999/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/elhy1999/ip.git (master) completed! -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/songgthu/ip.git completed! -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GohTengFong/ip.git completed! +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/proto-aiken-13/ip.git... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [118/479] Analyzing https://github.com/songgthu/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/proto-aiken-13/ip.git to complete... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GohTengFong/ip.git completed! -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [119/479] Analyzing https://github.com/GohTengFong/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bwangpj/ip.git... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/proto-aiken-13/ip.git to complete... +Aug 28, 2023 1:14:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bwangpj/ip.git to complete... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/songgthu/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/songgthu/ip.git (master)... +Aug 28, 2023 1:14:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GohTengFong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GohTengFong/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/simbayippy/ip.git completed! -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/weeweh/ip.git... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/weeweh/ip.git to complete... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/s-peiran/ip.git... +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/s-peiran/ip.git to complete... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/GohTengFong/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/GohTengFong/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Khaleelur-Rahman/ip.git completed! -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/GohTengFong/ip.git (master) completed! -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [120/479] Analyzing https://github.com/simbayippy/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/songgthu/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/songgthu/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/songgthu/ip.git (master) completed! -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/s-peiran/ip.git... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [121/479] Analyzing https://github.com/Khaleelur-Rahman/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/simbayippy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/simbayippy/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/s-peiran/ip.git to complete... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Khaleelur-Rahman/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Khaleelur-Rahman/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/simbayippy/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/simbayippy/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/simbayippy/ip.git (master) completed! -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... -Aug 27, 2023 4:47:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/proto-aiken-13/ip.git completed! -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [122/479] Analyzing https://github.com/proto-aiken-13/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jylow/ip.git... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jylow/ip.git to complete... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/proto-aiken-13/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/proto-aiken-13/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bwangpj/ip.git completed! -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lawruixi/ip.git... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [123/479] Analyzing https://github.com/bwangpj/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/weeweh/ip.git completed! +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lawruixi/ip.git to complete... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Khaleelur-Rahman/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Khaleelur-Rahman/ip.git (master) completed! +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [123/479] Analyzing https://github.com/bwangpj/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/s-peiran/ip.git completed! +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brandon-nam/ip.git... +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bwangpj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bwangpj/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/weeweh/ip.git completed! -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brandon-nam/ip.git to complete... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/proto-aiken-13/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/proto-aiken-13/ip.git (master)... +Aug 28, 2023 1:14:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/proto-aiken-13/ip.git (master) completed! +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [124/479] Analyzing https://github.com/weeweh/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JeremyYong128/ip.git... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JeremyYong128/ip.git to complete... -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/weeweh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/weeweh/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/s-peiran/ip.git completed! -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brandon-nam/ip.git... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bwangpj/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bwangpj/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bwangpj/ip.git (master) completed! +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [125/479] Analyzing https://github.com/s-peiran/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brandon-nam/ip.git to complete... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/s-peiran/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/s-peiran/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/weeweh/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/weeweh/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/weeweh/ip.git (master) completed! -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... -Aug 27, 2023 4:47:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jylow/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [126/479] Analyzing https://github.com/jylow/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LHeng1/ip.git... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [126/479] Analyzing https://github.com/jylow/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LHeng1/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jylow/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jylow/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/s-peiran/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lawruixi/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [127/479] Analyzing https://github.com/lawruixi/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Leb14/ip.git... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/s-peiran/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/s-peiran/ip.git (master) completed! +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [127/479] Analyzing https://github.com/lawruixi/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lawruixi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lawruixi/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Leb14/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JeremyYong128/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brandon-nam/ip.git completed! +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/B-enguin/ip.git... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/B-enguin/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brandon-nam/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/s-kybound/ip.git... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/s-kybound/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jylow/ip.git (master)... +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jylow/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jylow/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [128/479] Analyzing https://github.com/JeremyYong128/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JeremyYong128/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JeremyYong128/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lawruixi/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lawruixi/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lawruixi/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [129/479] Analyzing https://github.com/brandon-nam/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LHeng1/ip.git completed! +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wesho1107/ip.git... +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brandon-nam/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brandon-nam/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JeremyYong128/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JeremyYong128/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JeremyYong128/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LHeng1/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [130/479] Analyzing https://github.com/LHeng1/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wesho1107/ip.git... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wesho1107/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LHeng1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LHeng1/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brandon-nam/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Leb14/ip.git completed! -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [131/479] Analyzing https://github.com/Leb14/ip.git (master)... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yihfei/ip.git... -Aug 27, 2023 4:47:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yihfei/ip.git to complete... -Aug 27, 2023 4:47:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brandon-nam/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brandon-nam/ip.git (master) completed! +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [131/479] Analyzing https://github.com/Leb14/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Leb14/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Leb14/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LHeng1/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LHeng1/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LHeng1/ip.git (master) completed! +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/B-enguin/ip.git completed! -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AaronJT1/ip.git... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [132/479] Analyzing https://github.com/B-enguin/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AaronJT1/ip.git... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AaronJT1/ip.git to complete... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/s-kybound/ip.git completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dlathyun/ip.git... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [133/479] Analyzing https://github.com/s-kybound/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/B-enguin/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/B-enguin/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dlathyun/ip.git to complete... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Leb14/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Leb14/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Leb14/ip.git (master) completed! +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [133/479] Analyzing https://github.com/s-kybound/ip.git (master)... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/s-kybound/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/s-kybound/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wesho1107/ip.git completed! +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/s-kybound/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yihfei/ip.git completed! +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Angelyxx/ip.git... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/s-kybound/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/s-kybound/ip.git (master) completed! -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wesho1107/ip.git completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ricketytoc/ip.git... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [134/479] Analyzing https://github.com/wesho1107/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ricketytoc/ip.git to complete... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AaronJT1/ip.git completed! +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jingting1412/ip.git... +Aug 28, 2023 1:14:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wesho1107/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wesho1107/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yihfei/ip.git completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Angelyxx/ip.git... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dlathyun/ip.git completed! +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... +Aug 28, 2023 1:14:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... +Aug 28, 2023 1:14:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/B-enguin/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/B-enguin/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/B-enguin/ip.git (master) completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [135/479] Analyzing https://github.com/yihfei/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Angelyxx/ip.git to complete... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yihfei/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yihfei/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AaronJT1/ip.git completed! -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jingting1412/ip.git... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wesho1107/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wesho1107/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wesho1107/ip.git (master) completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [136/479] Analyzing https://github.com/AaronJT1/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jingting1412/ip.git to complete... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ricketytoc/ip.git completed! +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AaronJT1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AaronJT1/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yihfei/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yihfei/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yihfei/ip.git (master) completed! -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... -Aug 27, 2023 4:47:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dlathyun/ip.git completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SinhaVedant/ip.git... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [137/479] Analyzing https://github.com/dlathyun/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SinhaVedant/ip.git to complete... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dlathyun/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dlathyun/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ricketytoc/ip.git completed! -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AaronJT1/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AaronJT1/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AaronJT1/ip.git (master) completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [138/479] Analyzing https://github.com/ricketytoc/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/freddychenyouren2/ip.git... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/freddychenyouren2/ip.git to complete... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Angelyxx/ip.git completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ricketytoc/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ricketytoc/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingting1412/ip.git completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jordankanghm/ip.git... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [139/479] Analyzing https://github.com/jingting1412/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jordankanghm/ip.git to complete... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Angelyxx/ip.git completed! -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingting1412/ip.git completed! +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adhigop13/ip.git... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [140/479] Analyzing https://github.com/Angelyxx/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adhigop13/ip.git to complete... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ricketytoc/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ricketytoc/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ricketytoc/ip.git (master) completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [139/479] Analyzing https://github.com/Angelyxx/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dlathyun/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Angelyxx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Angelyxx/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dlathyun/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dlathyun/ip.git (master) completed! +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [140/479] Analyzing https://github.com/jingting1412/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jingting1412/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jingting1412/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/raydenlim/ip.git... +Aug 28, 2023 1:14:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/raydenlim/ip.git to complete... +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Angelyxx/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Angelyxx/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Angelyxx/ip.git (master) completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SinhaVedant/ip.git completed! -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/waseemingly/ip.git... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [141/479] Analyzing https://github.com/SinhaVedant/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/waseemingly/ip.git to complete... -Aug 27, 2023 4:47:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingting1412/ip.git (master)... +Aug 28, 2023 1:14:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SinhaVedant/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SinhaVedant/ip.git (master)... -Aug 27, 2023 4:47:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freddychenyouren2/ip.git completed! -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingting1412/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingting1412/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [142/479] Analyzing https://github.com/freddychenyouren2/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/raydenlim/ip.git... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/raydenlim/ip.git to complete... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/freddychenyouren2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/freddychenyouren2/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SinhaVedant/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SinhaVedant/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SinhaVedant/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jordankanghm/ip.git completed! -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jingyu987/ip.git... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [143/479] Analyzing https://github.com/jordankanghm/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jingyu987/ip.git to complete... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/waseemingly/ip.git completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/adhigop13/ip.git completed! -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [144/479] Analyzing https://github.com/waseemingly/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jordankanghm/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jordankanghm/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/FerdiHS/ip.git... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FerdiHS/ip.git to complete... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/freddychenyouren2/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/freddychenyouren2/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/freddychenyouren2/ip.git (master) completed! -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [144/479] Analyzing https://github.com/adhigop13/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/waseemingly/ip.git completed! -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [145/479] Analyzing https://github.com/waseemingly/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jrchoo/ip.git... -Aug 27, 2023 4:47:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jrchoo/ip.git to complete... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/waseemingly/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/waseemingly/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jrchoo/ip.git to complete... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raydenlim/ip.git completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RiyaMehta2211/ip.git to complete... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/waseemingly/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/waseemingly/ip.git (master)... -Aug 27, 2023 4:47:54 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/waseemingly/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raydenlim/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [145/479] Analyzing https://github.com/adhigop13/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/adhigop13/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/adhigop13/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jordankanghm/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jordankanghm/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jordankanghm/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [146/479] Analyzing https://github.com/raydenlim/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RiyaMehta2211/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RiyaMehta2211/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raydenlim/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raydenlim/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/FerdiHS/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [147/479] Analyzing https://github.com/FerdiHS/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/adhigop13/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/adhigop13/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/adhigop13/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jingyu987/ip.git completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhanpeng/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [147/479] Analyzing https://github.com/jingyu987/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhanpeng/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jingyu987/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/FerdiHS/ip.git completed! +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [148/479] Analyzing https://github.com/FerdiHS/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/juzzztinsoong/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/juzzztinsoong/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raydenlim/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raydenlim/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raydenlim/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [148/479] Analyzing https://github.com/jingyu987/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jingyu987/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jingyu987/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/FerdiHS/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/FerdiHS/ip.git (master)... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jrchoo/ip.git completed! +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... +Aug 28, 2023 1:14:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RiyaMehta2211/ip.git completed! +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jingyu987/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jingyu987/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jingyu987/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jrchoo/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/darrentfy/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [149/479] Analyzing https://github.com/jrchoo/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/darrentfy/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/FerdiHS/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/FerdiHS/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jrchoo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jrchoo/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RiyaMehta2211/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/redtailedfox/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/FerdiHS/ip.git (master) completed! +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [150/479] Analyzing https://github.com/RiyaMehta2211/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/redtailedfox/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RiyaMehta2211/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RiyaMehta2211/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jrchoo/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jrchoo/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jrchoo/ip.git (master) completed! +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leezhanpeng/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [151/479] Analyzing https://github.com/leezhanpeng/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Fallman2/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Fallman2/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhanpeng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhanpeng/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juzzztinsoong/ip.git completed! -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darrentfy/ip.git completed! +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [152/479] Analyzing https://github.com/juzzztinsoong/ip.git (master)... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Heran9/ip.git... -Aug 27, 2023 4:47:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/VN-Hao/ip.git to complete... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Heran9/ip.git to complete... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RiyaMehta2211/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RiyaMehta2211/ip.git (master) completed! -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [152/479] Analyzing https://github.com/juzzztinsoong/ip.git (master)... -Aug 27, 2023 4:47:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/juzzztinsoong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/juzzztinsoong/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/redtailedfox/ip.git completed! +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jingjie88/ip.git... +Aug 28, 2023 1:14:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jingjie88/ip.git to complete... +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/juzzztinsoong/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/juzzztinsoong/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/juzzztinsoong/ip.git (master) completed! -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darrentfy/ip.git completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/VN-Hao/ip.git... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [153/479] Analyzing https://github.com/darrentfy/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/VN-Hao/ip.git to complete... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darrentfy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darrentfy/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/redtailedfox/ip.git completed! -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leezhanpeng/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leezhanpeng/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leezhanpeng/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [154/479] Analyzing https://github.com/redtailedfox/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jingjie88/ip.git... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jingjie88/ip.git to complete... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/redtailedfox/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/redtailedfox/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Fallman2/ip.git completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darrentfy/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/H1410101/ip.git... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [155/479] Analyzing https://github.com/Fallman2/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/H1410101/ip.git to complete... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darrentfy/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darrentfy/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [155/479] Analyzing https://github.com/Fallman2/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/redtailedfox/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Fallman2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Fallman2/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Heran9/ip.git completed! -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/redtailedfox/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/redtailedfox/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [156/479] Analyzing https://github.com/Heran9/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kimshitong/ip.git... -Aug 27, 2023 4:47:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kimshitong/ip.git to complete... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/VN-Hao/ip.git completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Heran9/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Heran9/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... -Aug 27, 2023 4:47:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/VN-Hao/ip.git completed! -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [157/479] Analyzing https://github.com/VN-Hao/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ivanleekk/ip.git... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivanleekk/ip.git to complete... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jingjie88/ip.git completed! -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [158/479] Analyzing https://github.com/jingjie88/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lamchenghou/ip.git... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lamchenghou/ip.git to complete... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Fallman2/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fallman2/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fallman2/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [157/479] Analyzing https://github.com/VN-Hao/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/VN-Hao/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/VN-Hao/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Heran9/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Heran9/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Heran9/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [158/479] Analyzing https://github.com/jingjie88/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jingjie88/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jingjie88/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VN-Hao/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VN-Hao/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VN-Hao/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/H1410101/ip.git completed! -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [159/479] Analyzing https://github.com/H1410101/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayruxin/ip.git... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jingjie88/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kimshitong/ip.git completed! -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tayruxin/ip.git to complete... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/raynertjx/ip.git... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/H1410101/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/H1410101/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/raynertjx/ip.git to complete... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jingjie88/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jingjie88/ip.git (master) completed! -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kimshitong/ip.git completed! +Aug 28, 2023 1:14:26 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/raynertjx/ip.git... +Aug 28, 2023 1:14:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [160/479] Analyzing https://github.com/kimshitong/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/raynertjx/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivanleekk/ip.git completed! +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kimshitong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kimshitong/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhengyup/ip.git... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhengyup/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/H1410101/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lamchenghou/ip.git completed! +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/H1410101/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/H1410101/ip.git (master) completed! -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivanleekk/ip.git completed! -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [161/479] Analyzing https://github.com/ivanleekk/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhengyup/ip.git... -Aug 27, 2023 4:47:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhengyup/ip.git to complete... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/larrywang0701/ip.git... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/larrywang0701/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivanleekk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivanleekk/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... -Aug 27, 2023 4:47:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lamchenghou/ip.git completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kimshitong/ip.git (master)... +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kimshitong/ip.git (master)... +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kimshitong/ip.git (master) completed! +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [162/479] Analyzing https://github.com/lamchenghou/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/larrywang0701/ip.git... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/larrywang0701/ip.git to complete... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lamchenghou/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lamchenghou/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivanleekk/ip.git (master)... +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivanleekk/ip.git (master)... +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivanleekk/ip.git (master) completed! +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tayruxin/ip.git completed! -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/raynertjx/ip.git completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [163/479] Analyzing https://github.com/tayruxin/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Carlintyj/ip.git... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wxwern/ip.git... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wxwern/ip.git to complete... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Carlintyj/ip.git to complete... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tayruxin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tayruxin/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/raynertjx/ip.git completed! +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wxwern/ip.git... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wxwern/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhengyup/ip.git completed! +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nubnubyas/ip.git... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/larrywang0701/ip.git completed! +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lamchenghou/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aslam341/ip.git... +Aug 28, 2023 1:14:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aslam341/ip.git to complete... +Aug 28, 2023 1:14:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lamchenghou/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lamchenghou/ip.git (master) completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [164/479] Analyzing https://github.com/raynertjx/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raynertjx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raynertjx/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhengyup/ip.git completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tayruxin/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tayruxin/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tayruxin/ip.git (master) completed! +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [165/479] Analyzing https://github.com/zhengyup/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nubnubyas/ip.git... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nubnubyas/ip.git to complete... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhengyup/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhengyup/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/larrywang0701/ip.git completed! -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raynertjx/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Carlintyj/ip.git completed! +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LWZ19/ip.git... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raynertjx/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raynertjx/ip.git (master) completed! +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [166/479] Analyzing https://github.com/larrywang0701/ip.git (master)... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aslam341/ip.git... -Aug 27, 2023 4:47:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aslam341/ip.git to complete... -Aug 27, 2023 4:47:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/larrywang0701/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/larrywang0701/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wxwern/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [167/479] Analyzing https://github.com/wxwern/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LWZ19/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LWZ19/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Carlintyj/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timleow/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timleow/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nubnubyas/ip.git completed! +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rayshawntan/ip.git... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhengyup/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhengyup/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhengyup/ip.git (master) completed! +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [167/479] Analyzing https://github.com/Carlintyj/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aslam341/ip.git completed! +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aexolate/ip.git... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/larrywang0701/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/larrywang0701/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/larrywang0701/ip.git (master) completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [168/479] Analyzing https://github.com/Carlintyj/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Carlintyj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Carlintyj/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [168/479] Analyzing https://github.com/wxwern/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wxwern/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wxwern/ip.git (master)... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LWZ19/ip.git completed! +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Carlintyj/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sheeepen/ip.git... +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sheeepen/ip.git to complete... +Aug 28, 2023 1:14:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Carlintyj/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Carlintyj/ip.git (master) completed! -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nubnubyas/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [169/479] Analyzing https://github.com/nubnubyas/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rayshawntan/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rayshawntan/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nubnubyas/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nubnubyas/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timleow/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayshawntan/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ncmathan/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ncmathan/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aexolate/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iyioon/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wxwern/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nubnubyas/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wxwern/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nubnubyas/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nubnubyas/ip.git (master) completed! -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aslam341/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wxwern/ip.git (master) completed! +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [170/479] Analyzing https://github.com/aslam341/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aexolate/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aexolate/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [171/479] Analyzing https://github.com/LWZ19/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/aslam341/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/aslam341/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timleow/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [171/479] Analyzing https://github.com/timleow/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sheeepen/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sheeepen/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:47:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LWZ19/ip.git completed! -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shuyangk/ip.git... -Aug 27, 2023 4:47:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shuyangk/ip.git to complete... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aslam341/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aslam341/ip.git (master)... -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aslam341/ip.git (master) completed! -Aug 27, 2023 4:47:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [172/479] Analyzing https://github.com/LWZ19/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LWZ19/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LWZ19/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/timleow/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [172/479] Analyzing https://github.com/timleow/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timleow/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timleow/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LWZ19/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sheeepen/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kiwibang/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kiwibang/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LWZ19/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LWZ19/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayshawntan/ip.git completed! -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [173/479] Analyzing https://github.com/rayshawntan/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ncmathan/ip.git... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ncmathan/ip.git to complete... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rayshawntan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rayshawntan/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aexolate/ip.git completed! -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/timleow/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/timleow/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/timleow/ip.git (master) completed! +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [174/479] Analyzing https://github.com/aexolate/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iyioon/ip.git... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iyioon/ip.git to complete... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shuyangk/ip.git completed! -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sheeepen/ip.git completed! -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [175/479] Analyzing https://github.com/shuyangk/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kiwibang/ip.git... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncmathan/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mingyu-wan/ip.git... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aexolate/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aexolate/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mingyu-wan/ip.git to complete... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kiwibang/ip.git to complete... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iyioon/ip.git completed! +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/asdfghjkxd/ip.git... +Aug 28, 2023 1:14:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/asdfghjkxd/ip.git to complete... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rayshawntan/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rayshawntan/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rayshawntan/ip.git (master) completed! +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [175/479] Analyzing https://github.com/Sheeepen/ip.git (master)... +Aug 28, 2023 1:14:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aexolate/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aexolate/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/aexolate/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [176/479] Analyzing https://github.com/Sheeepen/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sheeepen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sheeepen/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [176/479] Analyzing https://github.com/shuyangk/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuyangk/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuyangk/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Sheeepen/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiwibang/ip.git completed! +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sushiyade/ip.git... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sushiyade/ip.git to complete... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Sheeepen/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Sheeepen/ip.git (master) completed! -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncmathan/ip.git completed! -Aug 27, 2023 4:48:00 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [177/479] Analyzing https://github.com/ncmathan/ip.git (master)... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LuoZYi/ip.git... -Aug 27, 2023 4:48:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LuoZYi/ip.git to complete... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ncmathan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ncmathan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iyioon/ip.git completed! -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/asdfghjkxd/ip.git... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuyangk/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shuyangk/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shuyangk/ip.git (master) completed! +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [178/479] Analyzing https://github.com/iyioon/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/asdfghjkxd/ip.git to complete... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iyioon/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iyioon/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LuoZYi/ip.git completed! +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/mingyu-wan/ip.git completed! -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [179/479] Analyzing https://github.com/mingyu-wan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sushiyade/ip.git... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sushiyade/ip.git to complete... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiwibang/ip.git completed! -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Nid21cs/ip.git... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/McNaBry/ip.git... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nid21cs/ip.git to complete... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/McNaBry/ip.git to complete... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ncmathan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/miljyy/ip.git... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ncmathan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/miljyy/ip.git to complete... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ncmathan/ip.git (master) completed! +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [179/479] Analyzing https://github.com/kiwibang/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iyioon/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [180/479] Analyzing https://github.com/kiwibang/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iyioon/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iyioon/ip.git (master) completed! -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiwibang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiwibang/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [180/479] Analyzing https://github.com/mingyu-wan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mingyu-wan/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mingyu-wan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sushiyade/ip.git completed! +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... +Aug 28, 2023 1:14:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ncduy0303/ip.git to complete... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kiwibang/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kiwibang/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kiwibang/ip.git (master) completed! -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LuoZYi/ip.git completed! -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [181/479] Analyzing https://github.com/LuoZYi/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/McNaBry/ip.git... -Aug 27, 2023 4:48:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/McNaBry/ip.git to complete... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mingyu-wan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mingyu-wan/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mingyu-wan/ip.git (master) completed! +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [182/479] Analyzing https://github.com/asdfghjkxd/ip.git (master)... +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LuoZYi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LuoZYi/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/McNaBry/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nid21cs/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LuoZYi/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruishanteo/ip.git... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruishanteo/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/eyelessrhyme7/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/miljyy/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LuoZYi/ip.git (master)... -Aug 27, 2023 4:48:01 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LuoZYi/ip.git (master) completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/asdfghjkxd/ip.git completed! -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [182/479] Analyzing https://github.com/asdfghjkxd/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/miljyy/ip.git... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/miljyy/ip.git to complete... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/asdfghjkxd/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/asdfghjkxd/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sushiyade/ip.git completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ncduy0303/ip.git... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [183/479] Analyzing https://github.com/sushiyade/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ncduy0303/ip.git to complete... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nid21cs/ip.git completed! -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/m1oojv/ip.git... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sushiyade/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sushiyade/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/eyelessrhyme7/ip.git... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/eyelessrhyme7/ip.git to complete... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sushiyade/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sushiyade/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sushiyade/ip.git (master) completed! -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [184/479] Analyzing https://github.com/Nid21cs/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/McNaBry/ip.git completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruishanteo/ip.git... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [185/479] Analyzing https://github.com/McNaBry/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruishanteo/ip.git to complete... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [184/479] Analyzing https://github.com/McNaBry/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/McNaBry/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/McNaBry/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ncduy0303/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/McNaBry/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/McNaBry/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/McNaBry/ip.git (master) completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/miljyy/ip.git completed! -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/m1oojv/ip.git... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [186/479] Analyzing https://github.com/miljyy/ip.git (master)... -Aug 27, 2023 4:48:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/m1oojv/ip.git to complete... -Aug 27, 2023 4:48:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [185/479] Analyzing https://github.com/Nid21cs/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nid21cs/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nid21cs/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nid21cs/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/asdfghjkxd/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/eyelessrhyme7/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [187/479] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nixx162/ip.git... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Nixx162/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ncduy0303/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nid21cs/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nid21cs/ip.git (master) completed! +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [186/479] Analyzing https://github.com/miljyy/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruishanteo/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Gabriel4357/ip.git... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mfjkri/ip.git... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Gabriel4357/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [188/479] Analyzing https://github.com/ncduy0303/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/m1oojv/ip.git completed! +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/mfjkri/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/miljyy/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/miljyy/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... +Aug 28, 2023 1:14:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/asdfghjkxd/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/asdfghjkxd/ip.git (master) completed! +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [187/479] Analyzing https://github.com/ncduy0303/ip.git (master)... +Aug 28, 2023 1:14:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ncduy0303/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ncduy0303/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miljyy/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Nixx162/ip.git completed! +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RoeReRe/ip.git... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ncduy0303/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miljyy/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miljyy/ip.git (master) completed! +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [188/479] Analyzing https://github.com/eyelessrhyme7/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ncduy0303/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ncduy0303/ip.git (master) completed! -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruishanteo/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mfjkri/ip.git... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [189/479] Analyzing https://github.com/ruishanteo/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/mfjkri/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eyelessrhyme7/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eyelessrhyme7/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruishanteo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruishanteo/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/m1oojv/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eyelessrhyme7/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eyelessrhyme7/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eyelessrhyme7/ip.git (master) completed! +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [190/479] Analyzing https://github.com/m1oojv/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/junhonglow/ip.git... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/junhonglow/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/m1oojv/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/m1oojv/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Nixx162/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [191/479] Analyzing https://github.com/Nixx162/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RoeReRe/ip.git... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RoeReRe/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gabriel4357/ip.git completed! -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/junhonglow/ip.git completed! +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mfjkri/ip.git completed! +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Badatprogrammiing/ip.git... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Badatprogrammiing/ip.git to complete... -Aug 27, 2023 4:48:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [192/479] Analyzing https://github.com/Gabriel4357/ip.git (master)... -Aug 27, 2023 4:48:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mfjkri/ip.git completed! -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [193/479] Analyzing https://github.com/mfjkri/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nknguyenhc/ip.git... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nknguyenhc/ip.git to complete... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/junhonglow/ip.git completed! -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [194/479] Analyzing https://github.com/junhonglow/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/winson8222/ip.git... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nknguyenhc/ip.git to complete... +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/winson8222/ip.git to complete... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/m1oojv/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/m1oojv/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/m1oojv/ip.git (master) completed! +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [191/479] Analyzing https://github.com/Nixx162/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RoeReRe/ip.git completed! +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wujy28/ip.git... +Aug 28, 2023 1:14:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Nixx162/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Nixx162/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruishanteo/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruishanteo/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruishanteo/ip.git (master) completed! +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [192/479] Analyzing https://github.com/junhonglow/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junhonglow/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junhonglow/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nixx162/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nixx162/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nixx162/ip.git (master) completed! +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [193/479] Analyzing https://github.com/Gabriel4357/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Gabriel4357/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Gabriel4357/ip.git (master)... +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/junhonglow/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/junhonglow/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/junhonglow/ip.git (master) completed! -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RoeReRe/ip.git completed! -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [194/479] Analyzing https://github.com/mfjkri/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mfjkri/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mfjkri/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gabriel4357/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gabriel4357/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gabriel4357/ip.git (master) completed! +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [195/479] Analyzing https://github.com/RoeReRe/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wujy28/ip.git... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wujy28/ip.git to complete... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/RoeReRe/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/RoeReRe/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/winson8222/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Badatprogrammiing/ip.git completed! -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [196/479] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimWPEric/ip.git... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimWPEric/ip.git to complete... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wujy28/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lerxuann/ip.git... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Weiennn/ip.git to complete... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lerxuann/ip.git to complete... +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RoeReRe/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RoeReRe/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RoeReRe/ip.git (master) completed! -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nknguyenhc/ip.git completed! -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [196/479] Analyzing https://github.com/winson8222/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mfjkri/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mfjkri/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mfjkri/ip.git (master) completed! +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [197/479] Analyzing https://github.com/nknguyenhc/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HugeNoob/ip.git... -Aug 27, 2023 4:48:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HugeNoob/ip.git to complete... -Aug 27, 2023 4:48:04 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nknguyenhc/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nknguyenhc/ip.git (master)... -Aug 27, 2023 4:48:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/winson8222/ip.git completed! -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lerxuann/ip.git... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [198/479] Analyzing https://github.com/winson8222/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lerxuann/ip.git to complete... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/winson8222/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/winson8222/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/winson8222/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/winson8222/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/winson8222/ip.git (master) completed! -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wujy28/ip.git completed! -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [199/479] Analyzing https://github.com/wujy28/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Weiennn/ip.git... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Weiennn/ip.git to complete... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [198/479] Analyzing https://github.com/Badatprogrammiing/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Badatprogrammiing/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Badatprogrammiing/ip.git (master)... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lerxuann/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HugeNoob/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SimWPEric/ip.git completed! -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [200/479] Analyzing https://github.com/SimWPEric/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maj0-0/ip.git... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qyaner/ip.git... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Weiennn/ip.git completed! +Aug 28, 2023 1:14:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maj0-0/ip.git to complete... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nknguyenhc/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nknguyenhc/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nknguyenhc/ip.git (master) completed! +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [199/479] Analyzing https://github.com/wujy28/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wujy28/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wujy28/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wujy28/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wujy28/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wujy28/ip.git (master) completed! -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HugeNoob/ip.git completed! -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [201/479] Analyzing https://github.com/HugeNoob/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qyaner/ip.git... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qyaner/ip.git to complete... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HugeNoob/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... -Aug 27, 2023 4:48:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lerxuann/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ruiyangzh/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [202/479] Analyzing https://github.com/lerxuann/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ruiyangzh/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [200/479] Analyzing https://github.com/lerxuann/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Badatprogrammiing/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lerxuann/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lerxuann/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Badatprogrammiing/ip.git (master) completed! +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [201/479] Analyzing https://github.com/SimWPEric/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimWPEric/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimWPEric/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lerxuann/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lerxuann/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lerxuann/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Weiennn/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bombbird2001/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [203/479] Analyzing https://github.com/Weiennn/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bombbird2001/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maj0-0/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [204/479] Analyzing https://github.com/maj0-0/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [202/479] Analyzing https://github.com/HugeNoob/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/HugeNoob/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/HugeNoob/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qyaner/ip.git completed! +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hyc17003/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hyc17003/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qyaner/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maj0-0/ip.git completed! +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruiyangzh/ip.git completed! +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/adammangzijun/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [205/479] Analyzing https://github.com/qyaner/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/andytoh1/ip.git... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/adammangzijun/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/andytoh1/ip.git to complete... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimWPEric/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HugeNoob/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimWPEric/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimWPEric/ip.git (master) completed! +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [203/479] Analyzing https://github.com/Weiennn/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HugeNoob/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HugeNoob/ip.git (master) completed! +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [204/479] Analyzing https://github.com/qyaner/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Weiennn/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Weiennn/ip.git (master)... +Aug 28, 2023 1:14:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qyaner/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qyaner/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qyaner/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Weiennn/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Weiennn/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Weiennn/ip.git (master) completed! +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [205/479] Analyzing https://github.com/maj0-0/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/qyaner/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/qyaner/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruiyangzh/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepos INFO: [206/479] Analyzing https://github.com/ruiyangzh/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/andytoh1/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/andytoh1/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruiyangzh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruiyangzh/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/maj0-0/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/maj0-0/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maj0-0/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maj0-0/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruiyangzh/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maj0-0/ip.git (master) completed! +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [207/479] Analyzing https://github.com/Bombbird2001/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ruiyangzh/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ruiyangzh/ip.git (master) completed! -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hyc17003/ip.git completed! -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [207/479] Analyzing https://github.com/hyc17003/ip.git (master)... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Originalidk/ip.git... -Aug 27, 2023 4:48:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Originalidk/ip.git to complete... -Aug 27, 2023 4:48:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bombbird2001/ip.git completed! -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [208/479] Analyzing https://github.com/Bombbird2001/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/quzhetao01/ip.git to complete... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bombbird2001/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bombbird2001/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hyc17003/ip.git completed! +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Originalidk/ip.git completed! +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/quzhetao01/ip.git... +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [208/479] Analyzing https://github.com/Originalidk/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/adammangzijun/ip.git completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/InfiBeyond/ip.git... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [209/479] Analyzing https://github.com/adammangzijun/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/adammangzijun/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/adammangzijun/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/adammangzijun/ip.git (master) completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andytoh1/ip.git completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bearypop/ip.git... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [210/479] Analyzing https://github.com/andytoh1/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bearypop/ip.git to complete... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Originalidk/ip.git completed! -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [211/479] Analyzing https://github.com/Originalidk/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andytoh1/ip.git completed! +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/quzhetao01/ip.git to complete... +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sp4ce-cowboy/ip.git... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bearypop/ip.git to complete... +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/InfiBeyond/ip.git to complete... +Aug 28, 2023 1:14:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sp4ce-cowboy/ip.git to complete... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Originalidk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Originalidk/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Originalidk/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/quzhetao01/ip.git completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [212/479] Analyzing https://github.com/quzhetao01/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Originalidk/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Originalidk/ip.git (master) completed! -Aug 27, 2023 4:48:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... -Aug 27, 2023 4:48:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/quzhetao01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/quzhetao01/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/quzhetao01/ip.git (master)... -Aug 27, 2023 4:48:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/quzhetao01/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/quzhetao01/ip.git (master) completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [209/479] Analyzing https://github.com/hyc17003/ip.git (master)... +Aug 28, 2023 1:14:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hyc17003/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hyc17003/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bombbird2001/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bombbird2001/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bombbird2001/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [210/479] Analyzing https://github.com/adammangzijun/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hyc17003/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hyc17003/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hyc17003/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/adammangzijun/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/adammangzijun/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [211/479] Analyzing https://github.com/andytoh1/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/InfiBeyond/ip.git completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JasonLCY-Temp/ip.git... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/andytoh1/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/andytoh1/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonLCY-Temp/ip.git to complete... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/quzhetao01/ip.git completed! +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bearypop/ip.git completed! +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wjayee/ip.git... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [213/479] Analyzing https://github.com/InfiBeyond/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vivienherq/ip.git... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wjayee/ip.git to complete... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vivienherq/ip.git to complete... +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/andytoh1/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/adammangzijun/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/andytoh1/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/andytoh1/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [212/479] Analyzing https://github.com/InfiBeyond/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/adammangzijun/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/adammangzijun/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [213/479] Analyzing https://github.com/quzhetao01/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/quzhetao01/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/quzhetao01/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/InfiBeyond/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/InfiBeyond/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/InfiBeyond/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/quzhetao01/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/quzhetao01/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/InfiBeyond/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/InfiBeyond/ip.git (master) completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bearypop/ip.git completed! -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [214/479] Analyzing https://github.com/Bearypop/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vivienherq/ip.git... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vivienherq/ip.git to complete... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bearypop/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bearypop/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bearypop/ip.git (master) completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sp4ce-cowboy/ip.git completed! -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [215/479] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamesebond/ip.git... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamesebond/ip.git to complete... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/quzhetao01/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [214/479] Analyzing https://github.com/sp4ce-cowboy/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [215/479] Analyzing https://github.com/Bearypop/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sp4ce-cowboy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sp4ce-cowboy/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bearypop/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bearypop/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bearypop/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sp4ce-cowboy/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sp4ce-cowboy/ip.git (master) completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bearypop/ip.git (master)... +Aug 28, 2023 1:14:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bearypop/ip.git (master) completed! +Aug 28, 2023 1:14:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjayee/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonyeokj/ip.git... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [216/479] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [216/479] Analyzing https://github.com/wjayee/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jonyeokj/ip.git to complete... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjayee/ip.git completed! -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamesebond/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vivienherq/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/victorlaiyeeteng/ip.git... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [217/479] Analyzing https://github.com/wjayee/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/victorlaiyeeteng/ip.git to complete... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [217/479] Analyzing https://github.com/vivienherq/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wjayee/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wjayee/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... -Aug 27, 2023 4:48:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vivienherq/ip.git completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lyuanww/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [218/479] Analyzing https://github.com/vivienherq/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JasonLCY-Temp/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/victorlaiyeeteng/ip.git to complete... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lyuanww/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vivienherq/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vivienherq/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yongning0310/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/vivienherq/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/vivienherq/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/vivienherq/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamesebond/ip.git completed! -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [219/479] Analyzing https://github.com/jamesebond/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yongning0310/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yongning0310/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [218/479] Analyzing https://github.com/jamesebond/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wjayee/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamesebond/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamesebond/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wjayee/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wjayee/ip.git (master) completed! +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [219/479] Analyzing https://github.com/JasonLCY-Temp/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JasonLCY-Temp/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JasonLCY-Temp/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jonyeokj/ip.git completed! -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [220/479] Analyzing https://github.com/jonyeokj/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cloud7050/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lyuanww/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Cloud7050/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yongning0310/ip.git completed! +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LoMaply/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tllshan/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonyeokj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonyeokj/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamesebond/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamesebond/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamesebond/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorlaiyeeteng/ip.git completed! -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [221/479] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LoMaply/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LoMaply/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/victorlaiyeeteng/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/victorlaiyeeteng/ip.git (master) completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JasonLCY-Temp/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JasonLCY-Temp/ip.git (master) completed! +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [221/479] Analyzing https://github.com/lyuanww/ip.git (master)... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "Cloud7050/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Cloud7050/ip.git' 'repos/Cloud7050_ip/ip_bare' on path . : Cloning into bare repository 'repos/Cloud7050_ip/ip_bare'... @@ -4094,2453 +4090,2431 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tllshan/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tllshan/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lyuanww/ip.git completed! -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Gavino3o/ip.git... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [222/479] Analyzing https://github.com/lyuanww/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Gavino3o/ip.git to complete... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HollaG/ip.git... +Aug 28, 2023 1:14:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... +Aug 28, 2023 1:14:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lyuanww/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lyuanww/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jonyeokj/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jonyeokj/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jonyeokj/ip.git (master) completed! +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [222/479] Analyzing https://github.com/yongning0310/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lyuanww/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lyuanww/ip.git (master)... -Aug 27, 2023 4:48:09 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lyuanww/ip.git (master) completed! -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yongning0310/ip.git completed! -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HollaG/ip.git... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [223/479] Analyzing https://github.com/yongning0310/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HollaG/ip.git to complete... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yongning0310/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yongning0310/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LoMaply/ip.git completed! -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cheeggered/ip.git... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [224/479] Analyzing https://github.com/LoMaply/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cheeggered/ip.git to complete... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [223/479] Analyzing https://github.com/victorlaiyeeteng/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorlaiyeeteng/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorlaiyeeteng/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yongning0310/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yongning0310/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/victorlaiyeeteng/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yongning0310/ip.git (master) completed! -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/victorlaiyeeteng/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/victorlaiyeeteng/ip.git (master) completed! +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LoMaply/ip.git completed! +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tllshan/ip.git completed! -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cheeggered/ip.git... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [224/479] Analyzing https://github.com/LoMaply/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [225/479] Analyzing https://github.com/tllshan/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xenosf/ip.git... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cheeggered/ip.git to complete... +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xenosf/ip.git to complete... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tllshan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tllshan/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LoMaply/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LoMaply/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Gavino3o/ip.git completed! -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HollaG/ip.git completed! +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TehOPanas/ip.git... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [226/479] Analyzing https://github.com/Gavino3o/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TehOPanas/ip.git to complete... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... +Aug 28, 2023 1:14:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tllshan/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LoMaply/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tllshan/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tllshan/ip.git (master) completed! -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... -Aug 27, 2023 4:48:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HollaG/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [226/479] Analyzing https://github.com/Gavino3o/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LoMaply/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LoMaply/ip.git (master) completed! +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [227/479] Analyzing https://github.com/HollaG/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/neyapraveen/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/neyapraveen/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Gavino3o/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Gavino3o/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HollaG/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HollaG/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheeggered/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Gavino3o/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HollaG/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [228/479] Analyzing https://github.com/cheeggered/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/richiehx/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/richiehx/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Gavino3o/ip.git (master)... +Aug 28, 2023 1:14:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HollaG/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HollaG/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Gavino3o/ip.git (master) completed! +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xenosf/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [229/479] Analyzing https://github.com/xenosf/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheeggered/ip.git completed! +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [228/479] Analyzing https://github.com/xenosf/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/richiehx/ip.git... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/richiehx/ip.git to complete... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AlyssaPng/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [229/479] Analyzing https://github.com/cheeggered/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AlyssaPng/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xenosf/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xenosf/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cheeggered/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cheeggered/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TehOPanas/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [230/479] Analyzing https://github.com/TehOPanas/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/neyapraveen/ip.git completed! +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leezhengjing/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/seantehds/ip.git... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leezhengjing/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cheeggered/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cheeggered/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cheeggered/ip.git (master) completed! +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [230/479] Analyzing https://github.com/TehOPanas/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TehOPanas/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TehOPanas/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/xenosf/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xenosf/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xenosf/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/neyapraveen/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [231/479] Analyzing https://github.com/neyapraveen/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/seantehds/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/seantehds/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TehOPanas/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/neyapraveen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/neyapraveen/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TehOPanas/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TehOPanas/ip.git (master) completed! +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/neyapraveen/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/neyapraveen/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/neyapraveen/ip.git (master) completed! -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/richiehx/ip.git completed! -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ceilingFan456/ip.git... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [232/479] Analyzing https://github.com/richiehx/ip.git (master)... -Aug 27, 2023 4:48:11 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [232/479] Analyzing https://github.com/AlyssaPng/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/richiehx/ip.git completed! +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ceilingFan456/ip.git to complete... -Aug 27, 2023 4:48:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlyssaPng/ip.git completed! -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [233/479] Analyzing https://github.com/AlyssaPng/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [233/479] Analyzing https://github.com/richiehx/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lihongguang00/ip.git... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lihongguang00/ip.git to complete... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlyssaPng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlyssaPng/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/richiehx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/richiehx/ip.git (master)... +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leezhengjing/ip.git completed! -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/seantehds/ip.git completed! +Aug 28, 2023 1:14:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Singa-pirate/ip.git... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [234/479] Analyzing https://github.com/leezhengjing/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/songfangyl/ip.git... +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Singa-pirate/ip.git to complete... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/richiehx/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/richiehx/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/richiehx/ip.git (master) completed! +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [234/479] Analyzing https://github.com/leezhengjing/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/leezhengjing/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/leezhengjing/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AlyssaPng/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AlyssaPng/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AlyssaPng/ip.git (master) completed! -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/seantehds/ip.git completed! -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [235/479] Analyzing https://github.com/seantehds/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/songfangyl/ip.git... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/songfangyl/ip.git to complete... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seantehds/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seantehds/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ceilingFan456/ip.git completed! -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [236/479] Analyzing https://github.com/ceilingFan456/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vansh284/ip.git... -Aug 27, 2023 4:48:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vansh284/ip.git to complete... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leezhengjing/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leezhengjing/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leezhengjing/ip.git (master) completed! +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seantehds/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ceilingFan456/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ceilingFan456/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seantehds/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seantehds/ip.git (master) completed! -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ceilingFan456/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ceilingFan456/ip.git (master)... -Aug 27, 2023 4:48:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ceilingFan456/ip.git (master) completed! -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lihongguang00/ip.git completed! +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vansh284/ip.git... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [236/479] Analyzing https://github.com/lihongguang00/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vansh284/ip.git to complete... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Singa-pirate/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ceilingFan456/ip.git completed! +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos INFO: [237/479] Analyzing https://github.com/Singa-pirate/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YeoBohShin/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lihongguang00/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YeoBohShin/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [238/479] Analyzing https://github.com/lihongguang00/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shuenj/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [238/479] Analyzing https://github.com/ceilingFan456/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/songfangyl/ip.git completed! +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Singa-pirate/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Singa-pirate/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lihongguang00/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lihongguang00/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lihongguang00/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lihongguang00/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lihongguang00/ip.git (master) completed! -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/shuenj/ip.git to complete... +Aug 28, 2023 1:14:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lunaroddity/ip.git to complete... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ceilingFan456/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ceilingFan456/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ceilingFan456/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Singa-pirate/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ceilingFan456/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ceilingFan456/ip.git (master) completed! +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [239/479] Analyzing https://github.com/songfangyl/ip.git (master)... +Aug 28, 2023 1:14:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Singa-pirate/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Singa-pirate/ip.git (master) completed! -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/songfangyl/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [239/479] Analyzing https://github.com/songfangyl/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lunaroddity/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lunaroddity/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/songfangyl/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/songfangyl/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/songfangyl/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/songfangyl/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/songfangyl/ip.git (master) completed! -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vansh284/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [240/479] Analyzing https://github.com/vansh284/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/andrechuakj/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/andrechuakj/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vansh284/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vansh284/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shuenj/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WeeMingQing/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [241/479] Analyzing https://github.com/shuenj/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YeoBohShin/ip.git completed! -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WeeMingQing/ip.git... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [241/479] Analyzing https://github.com/YeoBohShin/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lunaroddity/ip.git completed! +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aliciamichellew/ip.git... -Aug 27, 2023 4:48:13 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WeeMingQing/ip.git to complete... +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aliciamichellew/ip.git to complete... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [242/479] Analyzing https://github.com/YeoBohShin/ip.git (master)... -Aug 27, 2023 4:48:13 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shuenj/ip.git completed! +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/samuelmui8/ip.git... +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YeoBohShin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YeoBohShin/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YeoBohShin/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YeoBohShin/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YeoBohShin/ip.git (master) completed! -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lunaroddity/ip.git completed! -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/samuelmui8/ip.git... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [243/479] Analyzing https://github.com/lunaroddity/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/samuelmui8/ip.git to complete... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [242/479] Analyzing https://github.com/lunaroddity/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lunaroddity/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lunaroddity/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vansh284/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vansh284/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vansh284/ip.git (master) completed! +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [243/479] Analyzing https://github.com/shuenj/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shuenj/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shuenj/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/andrechuakj/ip.git completed! -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/antonTan96/ip.git... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [244/479] Analyzing https://github.com/andrechuakj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/antonTan96/ip.git... +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/antonTan96/ip.git to complete... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrechuakj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrechuakj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lunaroddity/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lunaroddity/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lunaroddity/ip.git (master) completed! -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/andrechuakj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/andrechuakj/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/andrechuakj/ip.git (master) completed! -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shuenj/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shuenj/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shuenj/ip.git (master) completed! +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/aliciamichellew/ip.git completed! -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [245/479] Analyzing https://github.com/aliciamichellew/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/owenyeo/ip.git... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [245/479] Analyzing https://github.com/aliciamichellew/ip.git (master)... +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/owenyeo/ip.git to complete... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WeeMingQing/ip.git completed! -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelmui8/ip.git completed! +Aug 28, 2023 1:14:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gongg21/ip.git... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [246/479] Analyzing https://github.com/WeeMingQing/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aliciamichellew/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aliciamichellew/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nabonitasen/ip.git... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gongg21/ip.git to complete... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nabonitasen/ip.git to complete... +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/andrechuakj/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/andrechuakj/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/andrechuakj/ip.git (master) completed! +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [246/479] Analyzing https://github.com/WeeMingQing/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeMingQing/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeMingQing/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeMingQing/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aliciamichellew/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/aliciamichellew/ip.git (master)... -Aug 27, 2023 4:48:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelmui8/ip.git completed! -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nabonitasen/ip.git... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WeeMingQing/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WeeMingQing/ip.git (master) completed! +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [247/479] Analyzing https://github.com/samuelmui8/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nabonitasen/ip.git to complete... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aliciamichellew/ip.git (master) completed! +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelmui8/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelmui8/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/samuelmui8/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/samuelmui8/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/samuelmui8/ip.git (master) completed! +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/antonTan96/ip.git completed! -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erohsikivar/ip.git... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [248/479] Analyzing https://github.com/antonTan96/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/erohsikivar/ip.git to complete... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/antonTan96/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/antonTan96/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/samuelmui8/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/samuelmui8/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/samuelmui8/ip.git (master) completed! -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gongg21/ip.git completed! -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [249/479] Analyzing https://github.com/gongg21/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/owenyeo/ip.git completed! +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pzl111/ip.git... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [249/479] Analyzing https://github.com/owenyeo/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pzl111/ip.git to complete... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/owenyeo/ip.git completed! -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [250/479] Analyzing https://github.com/owenyeo/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/teozern1/ip.git... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/owenyeo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/owenyeo/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gongg21/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gongg21/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gongg21/ip.git (master) completed! -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gongg21/ip.git completed! +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/teozern1/ip.git... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nabonitasen/ip.git completed! +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/teozern1/ip.git to complete... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Elijah5399/ip.git... +Aug 28, 2023 1:14:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/antonTan96/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/owenyeo/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/antonTan96/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/antonTan96/ip.git (master) completed! +Aug 28, 2023 1:14:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/owenyeo/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/owenyeo/ip.git (master) completed! -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nabonitasen/ip.git completed! -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [250/479] Analyzing https://github.com/gongg21/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [251/479] Analyzing https://github.com/nabonitasen/ip.git (master)... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Elijah5399/ip.git... -Aug 27, 2023 4:48:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Elijah5399/ip.git to complete... -Aug 27, 2023 4:48:15 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gongg21/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gongg21/ip.git (master)... +Aug 28, 2023 1:14:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nabonitasen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nabonitasen/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nabonitasen/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nabonitasen/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nabonitasen/ip.git (master) completed! +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gongg21/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gongg21/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gongg21/ip.git (master) completed! +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/erohsikivar/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [252/479] Analyzing https://github.com/erohsikivar/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicleongyj/ip.git... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicleongyj/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/erohsikivar/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/erohsikivar/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nabonitasen/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nabonitasen/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nabonitasen/ip.git (master) completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/pzl111/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [253/479] Analyzing https://github.com/pzl111/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WinSheng1/ip.git... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [253/479] Analyzing https://github.com/pzl111/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WinSheng1/ip.git to complete... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/teozern1/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryamgoh/ip.git... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WinSheng1/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Elijah5399/ip.git completed! +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryamgoh/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/erohsikivar/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pzl111/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pzl111/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/erohsikivar/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/erohsikivar/ip.git (master) completed! -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [254/479] Analyzing https://github.com/teozern1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teozern1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teozern1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/pzl111/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/pzl111/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/pzl111/ip.git (master) completed! -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teozern1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teozern1/ip.git (master) completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Elijah5399/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yucongkoo/ip.git... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [255/479] Analyzing https://github.com/Elijah5399/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yucongkoo/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Elijah5399/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Elijah5399/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicleongyj/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [256/479] Analyzing https://github.com/nicleongyj/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozern1/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teozern1/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teozern1/ip.git (master) completed! +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Elijah5399/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Elijah5399/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Elijah5399/ip.git (master) completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicleongyj/ip.git completed! +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chen-Kuei/ip.git... +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [256/479] Analyzing https://github.com/nicleongyj/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Chen-Kuei/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WinSheng1/ip.git completed! -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [257/479] Analyzing https://github.com/WinSheng1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicleongyj/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicleongyj/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... -Aug 27, 2023 4:48:16 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WinSheng1/ip.git completed! +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ryamgoh/ip.git completed! -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/conradsoon/ip.git... +Aug 28, 2023 1:14:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [257/479] Analyzing https://github.com/WinSheng1/ip.git (master)... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GSgiansen/ip.git... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/conradsoon/ip.git to complete... +Aug 28, 2023 1:14:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GSgiansen/ip.git to complete... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yucongkoo/ip.git completed! +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/WinSheng1/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/WinSheng1/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/et-irl/ip.git... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicleongyj/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicleongyj/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicleongyj/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [258/479] Analyzing https://github.com/ryamgoh/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ryamgoh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ryamgoh/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yucongkoo/ip.git completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WinSheng1/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WinSheng1/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WinSheng1/ip.git (master) completed! +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [259/479] Analyzing https://github.com/yucongkoo/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/et-irl/ip.git... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/et-irl/ip.git to complete... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yucongkoo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yucongkoo/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryamgoh/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryamgoh/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryamgoh/ip.git (master) completed! +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Chen-Kuei/ip.git completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [260/479] Analyzing https://github.com/Chen-Kuei/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marioalvaro/ip.git... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [260/479] Analyzing https://github.com/Chen-Kuei/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marioalvaro/ip.git to complete... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/conradsoon/ip.git completed! -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GSgiansen/ip.git completed! +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [261/479] Analyzing https://github.com/conradsoon/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Seonlo99/ip.git... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chen-Kuei/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chen-Kuei/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Seonlo99/ip.git to complete... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/et-irl/ip.git completed! +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chen-Kuei/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chen-Kuei/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chen-Kuei/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [261/479] Analyzing https://github.com/conradsoon/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GSgiansen/ip.git completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/conradsoon/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/conradsoon/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joel-foo/ip.git... -Aug 27, 2023 4:48:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/joel-foo/ip.git to complete... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/conradsoon/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yucongkoo/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/conradsoon/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/conradsoon/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yucongkoo/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [262/479] Analyzing https://github.com/GSgiansen/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yucongkoo/ip.git (master) completed! -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/GSgiansen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/GSgiansen/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... -Aug 27, 2023 4:48:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/et-irl/ip.git completed! -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/conradsoon/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/conradsoon/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/conradsoon/ip.git (master) completed! +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepos INFO: [263/479] Analyzing https://github.com/et-irl/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tim-pipi/ip.git... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tim-pipi/ip.git to complete... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/et-irl/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/et-irl/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GSgiansen/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GSgiansen/ip.git (master)... +Aug 28, 2023 1:14:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GSgiansen/ip.git (master) completed! +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/marioalvaro/ip.git completed! -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [264/479] Analyzing https://github.com/marioalvaro/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marcellaantania/ip.git... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Seonlo99/ip.git completed! -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [264/479] Analyzing https://github.com/marioalvaro/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joel-foo/ip.git completed! -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brendanneojw/ip.git... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marcellaantania/ip.git to complete... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [265/479] Analyzing https://github.com/joel-foo/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tim-pipi/ip.git completed! +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Seonlo99/ip.git completed! +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brendanneojw/ip.git to complete... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/li-rongzhi/ip.git... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marioalvaro/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marioalvaro/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/li-rongzhi/ip.git to complete... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marioalvaro/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/et-irl/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marioalvaro/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marioalvaro/ip.git (master) completed! -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [265/479] Analyzing https://github.com/Seonlo99/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/et-irl/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/et-irl/ip.git (master) completed! -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [266/479] Analyzing https://github.com/joel-foo/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [266/479] Analyzing https://github.com/Seonlo99/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Seonlo99/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Seonlo99/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joel-foo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joel-foo/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Seonlo99/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Seonlo99/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Seonlo99/ip.git (master) completed! -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... -Aug 27, 2023 4:48:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tim-pipi/ip.git completed! -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator analyzeRepos INFO: [267/479] Analyzing https://github.com/tim-pipi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KamiliArsyad/ip.git... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KamiliArsyad/ip.git to complete... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tim-pipi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tim-pipi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/marcellaantania/ip.git completed! -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seraphimstreets/ip.git... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [268/479] Analyzing https://github.com/marcellaantania/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seraphimstreets/ip.git to complete... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joel-foo/ip.git (master)... +Aug 28, 2023 1:14:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joel-foo/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joel-foo/ip.git (master) completed! +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [268/479] Analyzing https://github.com/marcellaantania/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brendanneojw/ip.git completed! +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/trgao/ip.git... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [269/479] Analyzing https://github.com/li-rongzhi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/li-rongzhi/ip.git completed! +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marcellaantania/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marcellaantania/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/trgao/ip.git to complete... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brendanneojw/ip.git completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lilozz2/ip.git... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lilozz2/ip.git to complete... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tim-pipi/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tim-pipi/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tim-pipi/ip.git (master) completed! +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [269/479] Analyzing https://github.com/brendanneojw/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marcellaantania/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marcellaantania/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [270/479] Analyzing https://github.com/brendanneojw/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brendanneojw/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brendanneojw/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marcellaantania/ip.git (master) completed! +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [270/479] Analyzing https://github.com/li-rongzhi/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/li-rongzhi/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/li-rongzhi/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/brendanneojw/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brendanneojw/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/brendanneojw/ip.git (master) completed! -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KamiliArsyad/ip.git completed! -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jean-cq/ip.git... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [271/479] Analyzing https://github.com/KamiliArsyad/ip.git (master)... -Aug 27, 2023 4:48:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jean-cq/ip.git to complete... -Aug 27, 2023 4:48:19 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamiliArsyad/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamiliArsyad/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/trgao/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [272/479] Analyzing https://github.com/trgao/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seraphimstreets/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jedkohjk/ip.git... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jedkohjk/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [273/479] Analyzing https://github.com/seraphimstreets/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yytan25/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/trgao/ip.git completed! +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jean-cq/ip.git completed! +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lilozz2/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yytan25/ip.git... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ryantzr1/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maypfv/ip.git... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ryantzr1/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yytan25/ip.git to complete... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KamiliArsyad/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KamiliArsyad/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KamiliArsyad/ip.git (master) completed! +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [272/479] Analyzing https://github.com/seraphimstreets/ip.git (master)... +Aug 28, 2023 1:14:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/seraphimstreets/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/seraphimstreets/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/li-rongzhi/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/li-rongzhi/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/li-rongzhi/ip.git (master) completed! +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seraphimstreets/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/trgao/ip.git (master) completed! -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [274/479] Analyzing https://github.com/lilozz2/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [273/479] Analyzing https://github.com/trgao/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/seraphimstreets/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/seraphimstreets/ip.git (master) completed! -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [274/479] Analyzing https://github.com/lilozz2/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/trgao/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/trgao/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lilozz2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lilozz2/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lilozz2/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lilozz2/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lilozz2/ip.git (master) completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jean-cq/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [275/479] Analyzing https://github.com/jean-cq/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maypfv/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maypfv/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jean-cq/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jean-cq/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/trgao/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/trgao/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/trgao/ip.git (master) completed! +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jean-cq/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jean-cq/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jean-cq/ip.git (master) completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yytan25/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jedkohjk/ip.git completed! +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [276/479] Analyzing https://github.com/jedkohjk/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TohLiYuan/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [276/479] Analyzing https://github.com/yytan25/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TohLiYuan/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jedkohjk/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryantzr1/ip.git completed! -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yytan25/ip.git completed! +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [277/479] Analyzing https://github.com/yytan25/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JizhuoChen/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [277/479] Analyzing https://github.com/jedkohjk/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yytan25/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yytan25/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryantzr1/ip.git completed! +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChongWeiJie29/ip.git... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JizhuoChen/ip.git to complete... -Aug 27, 2023 4:48:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jedkohjk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jedkohjk/ip.git (master)... -Aug 27, 2023 4:48:20 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maypfv/ip.git completed! +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChongWeiJie29/ip.git to complete... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... +Aug 28, 2023 1:14:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yytan25/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yytan25/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yytan25/ip.git (master) completed! -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [278/479] Analyzing https://github.com/ryantzr1/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jedkohjk/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryantzr1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryantzr1/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [278/479] Analyzing https://github.com/ryantzr1/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jedkohjk/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jedkohjk/ip.git (master) completed! -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryantzr1/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryantzr1/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryantzr1/ip.git (master) completed! -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maypfv/ip.git completed! -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [279/479] Analyzing https://github.com/maypfv/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Goh-Li-Ting/ip.git... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Goh-Li-Ting/ip.git to complete... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryantzr1/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryantzr1/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maypfv/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maypfv/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryantzr1/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryantzr1/ip.git (master)... +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryantzr1/ip.git (master) completed! +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/maypfv/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maypfv/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maypfv/ip.git (master) completed! -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/TohLiYuan/ip.git completed! -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [280/479] Analyzing https://github.com/TohLiYuan/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kristayeo/ip.git... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kristayeo/ip.git to complete... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TohLiYuan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TohLiYuan/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JizhuoChen/ip.git completed! -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [281/479] Analyzing https://github.com/JizhuoChen/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/derekjxtan/ip.git... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/derekjxtan/ip.git to complete... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JizhuoChen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JizhuoChen/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChongWeiJie29/ip.git completed! +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shashahchk/ip.git... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shashahchk/ip.git to complete... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TohLiYuan/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [282/479] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TohLiYuan/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TohLiYuan/ip.git (master) completed! -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [282/479] Analyzing https://github.com/ChongWeiJie29/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [283/479] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChongWeiJie29/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChongWeiJie29/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JizhuoChen/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JizhuoChen/ip.git (master)... -Aug 27, 2023 4:48:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JizhuoChen/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChongWeiJie29/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChongWeiJie29/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Goh-Li-Ting/ip.git completed! -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [283/479] Analyzing https://github.com/Goh-Li-Ting/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chandan8186/ip.git... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chandan8186/ip.git to complete... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Goh-Li-Ting/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Goh-Li-Ting/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Goh-Li-Ting/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Goh-Li-Ting/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/derekjxtan/ip.git completed! -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [284/479] Analyzing https://github.com/derekjxtan/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kristayeo/ip.git completed! -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [284/479] Analyzing https://github.com/kristayeo/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alyssaongyx/ip.git... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alyssaongyx/ip.git to complete... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [285/479] Analyzing https://github.com/kristayeo/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/derekjxtan/ip.git completed! +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [285/479] Analyzing https://github.com/derekjxtan/ip.git (master)... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AndrewJanong/ip.git... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shashahchk/ip.git completed! -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chandan8186/ip.git completed! +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AndrewJanong/ip.git to complete... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kailash201/ip.git... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kristayeo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kristayeo/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/derekjxtan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/derekjxtan/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kailash201/ip.git to complete... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... +Aug 28, 2023 1:14:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kristayeo/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kristayeo/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kristayeo/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [286/479] Analyzing https://github.com/shashahchk/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [286/479] Analyzing https://github.com/Chandan8186/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/derekjxtan/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/derekjxtan/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/derekjxtan/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chandan8186/ip.git completed! -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [287/479] Analyzing https://github.com/Chandan8186/ip.git (master)... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/laurenlim2112/ip.git... -Aug 27, 2023 4:48:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/laurenlim2112/ip.git to complete... -Aug 27, 2023 4:48:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Chandan8186/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Chandan8186/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [287/479] Analyzing https://github.com/shashahchk/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shashahchk/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shashahchk/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Chandan8186/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shashahchk/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Chandan8186/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Chandan8186/ip.git (master) completed! -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kailash201/ip.git completed! -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [288/479] Analyzing https://github.com/Kailash201/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shashahchk/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shashahchk/ip.git (master) completed! +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [288/479] Analyzing https://github.com/alyssaongyx/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lambraydon/ip.git... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lambraydon/ip.git to complete... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AndrewJanong/ip.git completed! -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alyssaongyx/ip.git completed! -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [289/479] Analyzing https://github.com/AndrewJanong/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sk2001git/ip.git... +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sk2001git/ip.git to complete... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chonguschonguschongus/ip.git... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kailash201/ip.git completed! +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AndrewJanong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AndrewJanong/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chonguschonguschongus/ip.git to complete... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [290/479] Analyzing https://github.com/alyssaongyx/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alyssaongyx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alyssaongyx/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... +Aug 28, 2023 1:14:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alyssaongyx/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alyssaongyx/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alyssaongyx/ip.git (master) completed! -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/laurenlim2112/ip.git completed! -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [291/479] Analyzing https://github.com/laurenlim2112/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lshaoqin/ip.git... -Aug 27, 2023 4:48:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lshaoqin/ip.git to complete... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [290/479] Analyzing https://github.com/laurenlim2112/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/laurenlim2112/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/laurenlim2112/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... -Aug 27, 2023 4:48:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sk2001git/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AndrewJanong/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AndrewJanong/ip.git (master)... +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AndrewJanong/ip.git (master) completed! +Aug 28, 2023 1:14:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [291/479] Analyzing https://github.com/Kailash201/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kailash201/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kailash201/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lambraydon/ip.git completed! +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peasantbird/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [292/479] Analyzing https://github.com/sk2001git/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peasantbird/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lambraydon/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [293/479] Analyzing https://github.com/lambraydon/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sk2001git/ip.git completed! +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WangCheng0116/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WangCheng0116/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chonguschonguschongus/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lshaoqin/ip.git completed! +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teozhengyang/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teozhengyang/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kailash201/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kailash201/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kailash201/ip.git (master) completed! +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [292/479] Analyzing https://github.com/lambraydon/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lambraydon/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lambraydon/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laurenlim2112/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laurenlim2112/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laurenlim2112/ip.git (master) completed! +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [293/479] Analyzing https://github.com/sk2001git/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sk2001git/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sk2001git/ip.git (master)... +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lambraydon/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lambraydon/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lambraydon/ip.git (master) completed! -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [294/479] Analyzing https://github.com/chonguschonguschongus/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonguschonguschongus/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonguschonguschongus/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peasantbird/ip.git completed! +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... +Aug 28, 2023 1:14:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... +Aug 28, 2023 1:14:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chonguschonguschongus/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chonguschonguschongus/ip.git (master) completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lshaoqin/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chewjh1234/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [295/479] Analyzing https://github.com/lshaoqin/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chewjh1234/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewjh1234/ip.git completed! +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sk2001git/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lshaoqin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lshaoqin/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sk2001git/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sk2001git/ip.git (master) completed! +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [296/479] Analyzing https://github.com/peasantbird/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/teozhengyang/ip.git completed! +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chew01/ip.git... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peasantbird/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peasantbird/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lshaoqin/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lshaoqin/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lshaoqin/ip.git (master) completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WangCheng0116/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [296/479] Analyzing https://github.com/WangCheng0116/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/elaineshijie/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/elaineshijie/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [297/479] Analyzing https://github.com/WangCheng0116/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WangCheng0116/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WangCheng0116/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peasantbird/ip.git completed! -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lynnlow175/ip.git... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [297/479] Analyzing https://github.com/peasantbird/ip.git (master)... -Aug 27, 2023 4:48:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lynnlow175/ip.git to complete... -Aug 27, 2023 4:48:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peasantbird/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peasantbird/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/teozhengyang/ip.git completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lordidiot/ip.git... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lordidiot/ip.git to complete... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [298/479] Analyzing https://github.com/teozhengyang/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peasantbird/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peasantbird/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peasantbird/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewjh1234/ip.git completed! -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [299/479] Analyzing https://github.com/chewjh1234/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chew01/ip.git... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chew01/ip.git to complete... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [298/479] Analyzing https://github.com/chewjh1234/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chewjh1234/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chewjh1234/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/WangCheng0116/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/WangCheng0116/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/WangCheng0116/ip.git (master) completed! +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [299/479] Analyzing https://github.com/teozhengyang/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/teozhengyang/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/teozhengyang/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/elaineshijie/ip.git completed! +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lynnlow175/ip.git completed! +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chewjh1234/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chewjh1234/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chewjh1234/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/elaineshijie/ip.git completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lynnlow175/ip.git completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RSXIX/ip.git... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [300/479] Analyzing https://github.com/elaineshijie/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [301/479] Analyzing https://github.com/lynnlow175/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/juliusgambe/ip.git... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RSXIX/ip.git to complete... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/elaineshijie/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/elaineshijie/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/juliusgambe/ip.git to complete... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lynnlow175/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lynnlow175/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/lordidiot/ip.git completed! -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhonghan721/ip.git... -Aug 27, 2023 4:48:25 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teozhengyang/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhonghan721/ip.git to complete... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chew01/ip.git completed! +Aug 28, 2023 1:14:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teozhengyang/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teozhengyang/ip.git (master) completed! +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/WZWren/ip.git... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [301/479] Analyzing https://github.com/lynnlow175/ip.git (master)... +Aug 28, 2023 1:14:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... +Aug 28, 2023 1:14:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lynnlow175/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lynnlow175/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lynnlow175/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lynnlow175/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lynnlow175/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [302/479] Analyzing https://github.com/lordidiot/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/elaineshijie/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/elaineshijie/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [303/479] Analyzing https://github.com/chew01/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lordidiot/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lordidiot/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/elaineshijie/ip.git (master) completed! -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lordidiot/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lordidiot/ip.git (master)... -Aug 27, 2023 4:48:25 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lordidiot/ip.git (master) completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chew01/ip.git completed! -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [303/479] Analyzing https://github.com/chew01/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/WZWren/ip.git... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/WZWren/ip.git to complete... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chew01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chew01/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chew01/ip.git (master) completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/juliusgambe/ip.git completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/inezkok/ip.git... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [304/479] Analyzing https://github.com/juliusgambe/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/inezkok/ip.git... +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RSXIX/ip.git completed! +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/inezkok/ip.git to complete... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/juliusgambe/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/juliusgambe/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RSXIX/ip.git completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhonghan721/ip.git completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wasjoe1/ip.git... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [305/479] Analyzing https://github.com/zhonghan721/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kokrui/ip.git... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wasjoe1/ip.git to complete... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chew01/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/WZWren/ip.git completed! +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kokrui/ip.git to complete... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... +Aug 28, 2023 1:14:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chew01/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chew01/ip.git (master) completed! +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [305/479] Analyzing https://github.com/RSXIX/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/juliusgambe/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/juliusgambe/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/juliusgambe/ip.git (master) completed! -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [306/479] Analyzing https://github.com/RSXIX/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RSXIX/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RSXIX/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/WZWren/ip.git completed! -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyang628/ip.git... -Aug 27, 2023 4:48:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyang628/ip.git to complete... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [307/479] Analyzing https://github.com/WZWren/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [306/479] Analyzing https://github.com/zhonghan721/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhonghan721/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhonghan721/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/RSXIX/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/RSXIX/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/RSXIX/ip.git (master) completed! -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [307/479] Analyzing https://github.com/WZWren/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WZWren/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WZWren/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhonghan721/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhonghan721/ip.git (master)... +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WZWren/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhonghan721/ip.git (master) completed! +Aug 28, 2023 1:14:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WZWren/ip.git (master)... -Aug 27, 2023 4:48:26 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WZWren/ip.git (master) completed! -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/inezkok/ip.git completed! -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [308/479] Analyzing https://github.com/inezkok/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nananakx-x/ip.git... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nananakx-x/ip.git to complete... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/inezkok/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/inezkok/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wasjoe1/ip.git completed! -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ylyma/ip.git... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [309/479] Analyzing https://github.com/wasjoe1/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ylyma/ip.git... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ylyma/ip.git to complete... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wasjoe1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wasjoe1/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kokrui/ip.git completed! -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jinyang628/ip.git completed! -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AnnabelTing/ip.git... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timetraveller-123/ip.git... -Aug 27, 2023 4:48:27 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timetraveller-123/ip.git to complete... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AnnabelTing/ip.git to complete... +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wasjoe1/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wasjoe1/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wasjoe1/ip.git (master) completed! -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [310/479] Analyzing https://github.com/kokrui/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [310/479] Analyzing https://github.com/jinyang628/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/inezkok/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/inezkok/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/inezkok/ip.git (master) completed! -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [311/479] Analyzing https://github.com/jinyang628/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jinyang628/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jinyang628/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [311/479] Analyzing https://github.com/kokrui/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kokrui/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kokrui/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kokrui/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kokrui/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jinyang628/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kokrui/ip.git (master) completed! +Aug 28, 2023 1:14:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jinyang628/ip.git (master)... -Aug 27, 2023 4:48:27 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jinyang628/ip.git (master) completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nananakx-x/ip.git completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ylyma/ip.git completed! +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LicongHuang/ip.git... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [312/479] Analyzing https://github.com/nananakx-x/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [312/479] Analyzing https://github.com/ylyma/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LicongHuang/ip.git to complete... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ylyma/ip.git completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [313/479] Analyzing https://github.com/ylyma/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ylyma/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ylyma/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nananakx-x/ip.git completed! +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [313/479] Analyzing https://github.com/timetraveller-123/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AnnabelTing/ip.git completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jweng88/ip.git... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/EricXiong420/ip.git... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/EricXiong420/ip.git to complete... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [314/479] Analyzing https://github.com/AnnabelTing/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AnnabelTing/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AnnabelTing/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/timetraveller-123/ip.git completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jweng88/ip.git to complete... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jovkusuma/ip.git... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... +Aug 28, 2023 1:14:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jovkusuma/ip.git to complete... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ylyma/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ylyma/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ylyma/ip.git (master) completed! -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [315/479] Analyzing https://github.com/timetraveller-123/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/timetraveller-123/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/timetraveller-123/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AnnabelTing/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [314/479] Analyzing https://github.com/nananakx-x/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nananakx-x/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nananakx-x/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/timetraveller-123/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/timetraveller-123/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/timetraveller-123/ip.git (master) completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [315/479] Analyzing https://github.com/AnnabelTing/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AnnabelTing/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AnnabelTing/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nananakx-x/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AnnabelTing/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nananakx-x/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nananakx-x/ip.git (master) completed! +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AnnabelTing/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AnnabelTing/ip.git (master) completed! +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LicongHuang/ip.git completed! -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/bhnuka/ip.git... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [316/479] Analyzing https://github.com/LicongHuang/ip.git (master)... -Aug 27, 2023 4:48:28 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bhnuka/ip.git to complete... -Aug 27, 2023 4:48:28 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LicongHuang/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LicongHuang/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/EricXiong420/ip.git completed! +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jweng88/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [317/479] Analyzing https://github.com/Jweng88/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [317/479] Analyzing https://github.com/EricXiong420/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/J-hta-n/ip.git... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/EricXiong420/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Tim-Siu/ip.git... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LicongHuang/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Tim-Siu/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/J-hta-n/ip.git to complete... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LicongHuang/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LicongHuang/ip.git (master) completed! -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [318/479] Analyzing https://github.com/EricXiong420/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [318/479] Analyzing https://github.com/Jweng88/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/EricXiong420/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/EricXiong420/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jweng88/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jweng88/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jovkusuma/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yarnmengnus/ip.git... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yarnmengnus/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Jweng88/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [319/479] Analyzing https://github.com/jovkusuma/ip.git (master)... +Aug 28, 2023 1:14:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jweng88/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jweng88/ip.git (master) completed! -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [319/479] Analyzing https://github.com/jovkusuma/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jovkusuma/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jovkusuma/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/EricXiong420/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/EricXiong420/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/EricXiong420/ip.git (master) completed! -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jovkusuma/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jovkusuma/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jovkusuma/ip.git (master) completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bhnuka/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sopa301/ip.git... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [320/479] Analyzing https://github.com/bhnuka/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sopa301/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jovkusuma/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jovkusuma/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jovkusuma/ip.git (master) completed! +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bhnuka/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bhnuka/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/J-hta-n/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [321/479] Analyzing https://github.com/Tim-Siu/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ngeeyonglim/ip.git... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [321/479] Analyzing https://github.com/J-hta-n/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ngeeyonglim/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tim-Siu/ip.git completed! -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [322/479] Analyzing https://github.com/Tim-Siu/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/flexibo/ip.git... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... -Aug 27, 2023 4:48:29 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/J-hta-n/ip.git completed! +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tim-Siu/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tim-Siu/ip.git (master)... -Aug 27, 2023 4:48:29 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/flexibo/ip.git... +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bhnuka/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/flexibo/ip.git to complete... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yarnmengnus/ip.git completed! -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bhnuka/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bhnuka/ip.git (master) completed! +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [322/479] Analyzing https://github.com/J-hta-n/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ItsTYtan/ip.git... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ItsTYtan/ip.git to complete... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [323/479] Analyzing https://github.com/yarnmengnus/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/J-hta-n/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/J-hta-n/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tim-Siu/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tim-Siu/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tim-Siu/ip.git (master) completed! -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [323/479] Analyzing https://github.com/yarnmengnus/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yarnmengnus/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yarnmengnus/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/J-hta-n/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/J-hta-n/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/J-hta-n/ip.git (master) completed! +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yarnmengnus/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yarnmengnus/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yarnmengnus/ip.git (master) completed! -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sopa301/ip.git completed! -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/javinchua/ip.git... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [324/479] Analyzing https://github.com/sopa301/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/javinchua/ip.git... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/javinchua/ip.git to complete... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sopa301/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sopa301/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ngeeyonglim/ip.git completed! -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [325/479] Analyzing https://github.com/ngeeyonglim/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/amosting/ip.git... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/flexibo/ip.git completed! -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/amosting/ip.git to complete... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Cleon2/ip.git... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [326/479] Analyzing https://github.com/flexibo/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ItsTYtan/ip.git completed! -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cleon2/ip.git to complete... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ketweeen/ip.git... -Aug 27, 2023 4:48:30 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ngeeyonglim/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ngeeyonglim/ip.git (master)... +Aug 28, 2023 1:14:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ketweeen/ip.git to complete... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sopa301/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sopa301/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sopa301/ip.git (master) completed! -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [326/479] Analyzing https://github.com/flexibo/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ngeeyonglim/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ngeeyonglim/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ngeeyonglim/ip.git (master) completed! +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/flexibo/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/flexibo/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [327/479] Analyzing https://github.com/ItsTYtan/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ItsTYtan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ItsTYtan/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javinchua/ip.git completed! +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/flexibo/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/flexibo/ip.git (master)... -Aug 27, 2023 4:48:30 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/flexibo/ip.git (master) completed! -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ItsTYtan/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ItsTYtan/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ItsTYtan/ip.git (master) completed! -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javinchua/ip.git completed! -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [328/479] Analyzing https://github.com/javinchua/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sudarshan2401/ip.git... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sudarshan2401/ip.git to complete... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javinchua/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javinchua/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/amosting/ip.git completed! -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ItsTYtan/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wui-hong/ip.git... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [329/479] Analyzing https://github.com/amosting/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wui-hong/ip.git to complete... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ItsTYtan/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ItsTYtan/ip.git (master) completed! +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [329/479] Analyzing https://github.com/amosting/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cleon2/ip.git completed! +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amosting/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amosting/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ketweeen/ip.git completed! +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/javinchua/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cleon2/ip.git completed! -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/javinchua/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/javinchua/ip.git (master) completed! -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [330/479] Analyzing https://github.com/Cleon2/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Respirayson/ip.git... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Respirayson/ip.git to complete... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cleon2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cleon2/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ketweeen/ip.git completed! -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/amosting/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Chrainx/ip.git... -Aug 27, 2023 4:48:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chrainx/ip.git to complete... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Cleon2/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/amosting/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/amosting/ip.git (master) completed! -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [331/479] Analyzing https://github.com/ketweeen/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Cleon2/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Cleon2/ip.git (master) completed! -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ketweeen/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ketweeen/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... -Aug 27, 2023 4:48:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sudarshan2401/ip.git completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shishirbychapur/ip.git... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [332/479] Analyzing https://github.com/sudarshan2401/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Cleon2/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shishirbychapur/ip.git to complete... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Cleon2/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Cleon2/ip.git (master) completed! +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [332/479] Analyzing https://github.com/sudarshan2401/ip.git (master)... +Aug 28, 2023 1:14:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sudarshan2401/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sudarshan2401/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ketweeen/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ketweeen/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ketweeen/ip.git (master) completed! +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wui-hong/ip.git completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sunzihan23/ip.git... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [333/479] Analyzing https://github.com/wui-hong/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/sunzihan23/ip.git to complete... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wui-hong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wui-hong/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sudarshan2401/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sudarshan2401/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sudarshan2401/ip.git (master) completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Respirayson/ip.git completed! -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [334/479] Analyzing https://github.com/Respirayson/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wj331/ip.git... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Chrainx/ip.git completed! +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wj331/ip.git to complete... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Respirayson/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Respirayson/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wui-hong/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wui-hong/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wui-hong/ip.git (master) completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Chrainx/ip.git completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tjch-o/ip.git... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [335/479] Analyzing https://github.com/Chrainx/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tjch-o/ip.git to complete... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chrainx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chrainx/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Respirayson/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Respirayson/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Respirayson/ip.git (master) completed! -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shishirbychapur/ip.git completed! -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/licongshen12/ip.git... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [336/479] Analyzing https://github.com/shishirbychapur/ip.git (master)... -Aug 27, 2023 4:48:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/licongshen12/ip.git to complete... -Aug 27, 2023 4:48:32 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shishirbychapur/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shishirbychapur/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chrainx/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chrainx/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chrainx/ip.git (master) completed! +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sunzihan23/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [337/479] Analyzing https://github.com/sunzihan23/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mamayuan/ip.git... +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mamayuan/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sunzihan23/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sunzihan23/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shishirbychapur/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wj331/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [338/479] Analyzing https://github.com/wj331/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shishirbychapur/ip.git (master)... +Aug 28, 2023 1:14:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shishirbychapur/ip.git (master) completed! +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ong-wei-hong/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [338/479] Analyzing https://github.com/wj331/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tjch-o/ip.git completed! +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ong-wei-hong/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wj331/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wj331/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/licongshen12/ip.git completed! +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cbj252/ip.git... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sunzihan23/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tjch-o/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sunzihan23/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tanboonkhong/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sunzihan23/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [339/479] Analyzing https://github.com/tjch-o/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanboonkhong/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjch-o/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjch-o/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wj331/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wj331/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wj331/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tjch-o/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tjch-o/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/licongshen12/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cbj252/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [340/479] Analyzing https://github.com/licongshen12/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cbj252/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/licongshen12/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/licongshen12/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mamayuan/ip.git completed! +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/licongshen12/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/licongshen12/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/licongshen12/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mamayuan/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [341/479] Analyzing https://github.com/mamayuan/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlfredBeNoel/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlfredBeNoel/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ong-wei-hong/ip.git completed! -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/keaganpzh/ip.git... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [342/479] Analyzing https://github.com/ong-wei-hong/ip.git (master)... -Aug 27, 2023 4:48:33 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/mamayuan/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/mamayuan/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/keaganpzh/ip.git to complete... -Aug 27, 2023 4:48:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ong-wei-hong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ong-wei-hong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjch-o/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tjch-o/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tjch-o/ip.git (master) completed! +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanboonkhong/ip.git completed! -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [343/479] Analyzing https://github.com/tanboonkhong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [342/479] Analyzing https://github.com/ong-wei-hong/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ElginTZM/ip.git... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cbj252/ip.git completed! +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mamayuan/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ElginTZM/ip.git to complete... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ong-wei-hong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ong-wei-hong/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mamayuan/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/mamayuan/ip.git (master) completed! +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [343/479] Analyzing https://github.com/tanboonkhong/ip.git (master)... +Aug 28, 2023 1:14:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanboonkhong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanboonkhong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanboonkhong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanboonkhong/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanboonkhong/ip.git (master) completed! -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cbj252/ip.git completed! -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [344/479] Analyzing https://github.com/cbj252/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LimJH2002/ip.git... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LimJH2002/ip.git to complete... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ong-wei-hong/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AlfredBeNoel/ip.git completed! -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ong-wei-hong/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ong-wei-hong/ip.git (master) completed! +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [345/479] Analyzing https://github.com/AlfredBeNoel/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cmHuang777/ip.git... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cmHuang777/ip.git to complete... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cbj252/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cbj252/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AlfredBeNoel/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AlfredBeNoel/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/keaganpzh/ip.git completed! -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/WeeeHung/ip.git... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [346/479] Analyzing https://github.com/keaganpzh/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/WeeeHung/ip.git to complete... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlfredBeNoel/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlfredBeNoel/ip.git (master) completed! -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/keaganpzh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/keaganpzh/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ElginTZM/ip.git completed! -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [347/479] Analyzing https://github.com/ElginTZM/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xxiaoweii/ip.git... -Aug 27, 2023 4:48:34 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimJH2002/ip.git completed! +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cbj252/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xxiaoweii/ip.git to complete... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cbj252/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cbj252/ip.git (master) completed! +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [347/479] Analyzing https://github.com/ElginTZM/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ElginTZM/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ElginTZM/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cmHuang777/ip.git completed! +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... +Aug 28, 2023 1:14:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ElginTZM/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ElginTZM/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ElginTZM/ip.git (master) completed! -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... -Aug 27, 2023 4:48:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimJH2002/ip.git completed! -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [348/479] Analyzing https://github.com/LimJH2002/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rayyan35p/ip.git... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rayyan35p/ip.git to complete... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LimJH2002/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LimJH2002/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cmHuang777/ip.git completed! -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dhruvir29/ip.git... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/keaganpzh/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/keaganpzh/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/keaganpzh/ip.git (master) completed! +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [349/479] Analyzing https://github.com/cmHuang777/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dhruvir29/ip.git to complete... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cmHuang777/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:14:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cmHuang777/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LimJH2002/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LimJH2002/ip.git (master)... +Aug 28, 2023 1:14:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LimJH2002/ip.git (master) completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/WeeeHung/ip.git completed! -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [350/479] Analyzing https://github.com/xxiaoweii/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LinWanLeii/ip.git... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [350/479] Analyzing https://github.com/WeeeHung/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rayyan35p/ip.git completed! +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cmHuang777/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LinWanLeii/ip.git to complete... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cmHuang777/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cmHuang777/ip.git (master) completed! +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [351/479] Analyzing https://github.com/WeeeHung/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/WeeeHung/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/WeeeHung/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xxiaoweii/ip.git completed! -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [351/479] Analyzing https://github.com/xxiaoweii/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Song-Mengfei/ip.git... -Aug 27, 2023 4:48:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Song-Mengfei/ip.git to complete... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/WeeeHung/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dhruvir29/ip.git completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tiif/ip.git... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/WeeeHung/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/WeeeHung/ip.git (master) completed! -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xxiaoweii/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xxiaoweii/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... -Aug 27, 2023 4:48:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rayyan35p/ip.git completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinyuan0425/ip.git... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [352/479] Analyzing https://github.com/rayyan35p/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinyuan0425/ip.git to complete... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xxiaoweii/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rayyan35p/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rayyan35p/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xxiaoweii/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xxiaoweii/ip.git (master) completed! +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [353/479] Analyzing https://github.com/dhruvir29/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rayyan35p/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/rayyan35p/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/rayyan35p/ip.git (master) completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dhruvir29/ip.git completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tiif/ip.git... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [353/479] Analyzing https://github.com/dhruvir29/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tiif/ip.git to complete... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dhruvir29/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dhruvir29/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dhruvir29/ip.git (master) completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LinWanLeii/ip.git completed! -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [354/479] Analyzing https://github.com/LinWanLeii/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicholascher/ip.git... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dhruvir29/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dhruvir29/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [355/479] Analyzing https://github.com/jinyuan0425/ip.git (master)... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicholascher/ip.git to complete... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LinWanLeii/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LinWanLeii/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Song-Mengfei/ip.git completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/hcs1203/ip.git... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/hcs1203/ip.git to complete... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dhruvir29/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LinWanLeii/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dhruvir29/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dhruvir29/ip.git (master) completed! -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [355/479] Analyzing https://github.com/Song-Mengfei/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LinWanLeii/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LinWanLeii/ip.git (master) completed! -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Song-Mengfei/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Song-Mengfei/ip.git (master) completed! -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jinyuan0425/ip.git completed! -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [356/479] Analyzing https://github.com/jinyuan0425/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/papataco14/ip.git... -Aug 27, 2023 4:48:36 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/papataco14/ip.git to complete... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jinyuan0425/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jinyuan0425/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... -Aug 27, 2023 4:48:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tiif/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [357/479] Analyzing https://github.com/tiif/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinyuan0425/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KamJiaYue/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LinWanLeii/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KamJiaYue/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tiif/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tiif/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "papataco14/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/papataco14/ip.git' 'repos/papataco14_ip/ip_bare' on path . : Cloning into bare repository 'repos/papataco14_ip/ip_bare'... @@ -6556,833 +6530,829 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NereusWB922/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinyuan0425/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinyuan0425/ip.git (master) completed! +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [356/479] Analyzing https://github.com/Song-Mengfei/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NereusWB922/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholascher/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [358/479] Analyzing https://github.com/nicholascher/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LinWanLeii/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LinWanLeii/ip.git (master) completed! +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [357/479] Analyzing https://github.com/tiif/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Song-Mengfei/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Song-Mengfei/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tiif/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tiif/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Song-Mengfei/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tiif/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Song-Mengfei/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Song-Mengfei/ip.git (master) completed! +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tiif/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tiif/ip.git (master) completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hcs1203/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [359/479] Analyzing https://github.com/hcs1203/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [358/479] Analyzing https://github.com/hcs1203/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PohSayKeong/ip.git... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PohSayKeong/ip.git to complete... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hcs1203/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hcs1203/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/hcs1203/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/hcs1203/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hcs1203/ip.git (master) completed! -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholascher/ip.git completed! +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [359/479] Analyzing https://github.com/nicholascher/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivyy-poison/ip.git... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ivyy-poison/ip.git to complete... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nicholascher/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nicholascher/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KamJiaYue/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicholascher/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [360/479] Analyzing https://github.com/KamJiaYue/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jacobcuison/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jacobcuison/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicholascher/ip.git (master)... +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicholascher/ip.git (master) completed! +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/NereusWB922/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KamJiaYue/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KamJiaYue/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator analyzeRepos INFO: [361/479] Analyzing https://github.com/NereusWB922/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ji-just-ji/ip.git... +Aug 28, 2023 1:15:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ji-just-ji/ip.git to complete... -Aug 27, 2023 4:48:37 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NereusWB922/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NereusWB922/ip.git (master)... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PohSayKeong/ip.git completed! -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kohkaijie/ip.git... -Aug 27, 2023 4:48:37 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [362/479] Analyzing https://github.com/PohSayKeong/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kohkaijie/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KamJiaYue/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NereusWB922/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NereusWB922/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NereusWB922/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [362/479] Analyzing https://github.com/PohSayKeong/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KamJiaYue/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KamJiaYue/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivyy-poison/ip.git completed! +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rocketninja7/ip.git... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [363/479] Analyzing https://github.com/ivyy-poison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PohSayKeong/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PohSayKeong/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rocketninja7/ip.git to complete... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ivyy-poison/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ivyy-poison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PohSayKeong/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PohSayKeong/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PohSayKeong/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jacobcuison/ip.git completed! +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [364/479] Analyzing https://github.com/jacobcuison/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zekone/ip.git... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [364/479] Analyzing https://github.com/ji-just-ji/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zekone/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jacobcuison/ip.git completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ji-just-ji/ip.git completed! +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/markgcera/ip.git... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [365/479] Analyzing https://github.com/jacobcuison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kohkaijie/ip.git completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jacobcuison/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jacobcuison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rocketninja7/ip.git completed! -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... -Aug 27, 2023 4:48:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/markgcera/ip.git to complete... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivyy-poison/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivyy-poison/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivyy-poison/ip.git (master) completed! +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [365/479] Analyzing https://github.com/ji-just-ji/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacobcuison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ji-just-ji/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ji-just-ji/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacobcuison/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacobcuison/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kohkaijie/ip.git completed! +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/PearlynnT/ip.git... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [366/479] Analyzing https://github.com/kohkaijie/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PearlynnT/ip.git to complete... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kohkaijie/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kohkaijie/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ji-just-ji/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ji-just-ji/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ji-just-ji/ip.git (master) completed! -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [367/479] Analyzing https://github.com/rocketninja7/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kohkaijie/ip.git (master)... -Aug 27, 2023 4:48:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kohkaijie/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kohkaijie/ip.git (master) completed! -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rocketninja7/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rocketninja7/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rocketninja7/ip.git (master) completed! -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rocketninja7/ip.git completed! +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/StevenLiudw/ip.git... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [367/479] Analyzing https://github.com/rocketninja7/ip.git (master)... +Aug 28, 2023 1:15:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/StevenLiudw/ip.git to complete... +Aug 28, 2023 1:15:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rocketninja7/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rocketninja7/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zekone/ip.git completed! -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos INFO: [368/479] Analyzing https://github.com/zekone/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/markgcera/ip.git completed! -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TeeRenJing/ip.git... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TeeRenJing/ip.git to complete... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [369/479] Analyzing https://github.com/markgcera/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PearlynnT/ip.git completed! -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zekone/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zekone/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rocketninja7/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/markgcera/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rocketninja7/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rocketninja7/ip.git (master) completed! +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/mounilsankar/ip.git... +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [369/479] Analyzing https://github.com/markgcera/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mounilsankar/ip.git to complete... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/markgcera/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/markgcera/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PearlynnT/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dloh2236/ip.git... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dloh2236/ip.git to complete... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zannloo/ip.git... -Aug 27, 2023 4:48:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/markgcera/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/markgcera/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/markgcera/ip.git (master) completed! -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [370/479] Analyzing https://github.com/PearlynnT/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zekone/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zekone/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zekone/ip.git (master) completed! -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [370/479] Analyzing https://github.com/PearlynnT/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/markgcera/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/markgcera/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/markgcera/ip.git (master) completed! +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PearlynnT/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PearlynnT/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [371/479] Analyzing https://github.com/StevenLiudw/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PearlynnT/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PearlynnT/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PearlynnT/ip.git (master) completed! -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... -Aug 27, 2023 4:48:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dloh2236/ip.git completed! -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [372/479] Analyzing https://github.com/dloh2236/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/StevenLiudw/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [371/479] Analyzing https://github.com/StevenLiudw/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zannloo/ip.git... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zannloo/ip.git to complete... +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/StevenLiudw/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/StevenLiudw/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/junnengsoo/ip.git... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [372/479] Analyzing https://github.com/TeeRenJing/ip.git (master)... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/mounilsankar/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/junnengsoo/ip.git to complete... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TeeRenJing/ip.git completed! -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [373/479] Analyzing https://github.com/TeeRenJing/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/freshcabbage123/ip.git... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TeeRenJing/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TeeRenJing/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/mounilsankar/ip.git completed! -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zannloo/ip.git completed! -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/freshcabbage123/ip.git to complete... +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dloh2236/ip.git completed! +Aug 28, 2023 1:15:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kokseng1/ip.git... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kokseng1/ip.git to complete... -Aug 27, 2023 4:48:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [374/479] Analyzing https://github.com/mounilsankar/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/StevenLiudw/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/StevenLiudw/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/StevenLiudw/ip.git (master) completed! +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [373/479] Analyzing https://github.com/mounilsankar/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mounilsankar/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mounilsankar/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/TeeRenJing/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/TeeRenJing/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/TeeRenJing/ip.git (master) completed! -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [374/479] Analyzing https://github.com/dloh2236/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dloh2236/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dloh2236/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zannloo/ip.git completed! +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/itsNatTan/ip.git... +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/itsNatTan/ip.git to complete... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/mounilsankar/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/mounilsankar/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mounilsankar/ip.git (master) completed! -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [375/479] Analyzing https://github.com/zannloo/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zannloo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zannloo/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zannloo/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zannloo/ip.git (master)... -Aug 27, 2023 4:48:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zannloo/ip.git (master) completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dloh2236/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dloh2236/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dloh2236/ip.git (master) completed! +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/junnengsoo/ip.git completed! -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [376/479] Analyzing https://github.com/junnengsoo/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tjingsheng/ip.git... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [376/479] Analyzing https://github.com/junnengsoo/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tjingsheng/ip.git to complete... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/junnengsoo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/junnengsoo/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/freshcabbage123/ip.git completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ZD292/ip.git... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [377/479] Analyzing https://github.com/freshcabbage123/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ZD292/ip.git to complete... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kokseng1/ip.git completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alientian/ip.git... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [378/479] Analyzing https://github.com/Kokseng1/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itsNatTan/ip.git completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alientian/ip.git to complete... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zannloo/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zannloo/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zannloo/ip.git (master) completed! +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [377/479] Analyzing https://github.com/freshcabbage123/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/freshcabbage123/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/freshcabbage123/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/junnengsoo/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/junnengsoo/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/junnengsoo/ip.git (master) completed! +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [378/479] Analyzing https://github.com/Kokseng1/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kokseng1/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kokseng1/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kokseng1/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kokseng1/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kokseng1/ip.git (master) completed! -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [379/479] Analyzing https://github.com/itsNatTan/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/freshcabbage123/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itsNatTan/ip.git completed! +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/frrrrry/ip.git... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [379/479] Analyzing https://github.com/itsNatTan/ip.git (master)... +Aug 28, 2023 1:15:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/freshcabbage123/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/freshcabbage123/ip.git (master) completed! -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/frrrrry/ip.git to complete... +Aug 28, 2023 1:15:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/itsNatTan/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/itsNatTan/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tjingsheng/ip.git completed! -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [380/479] Analyzing https://github.com/tjingsheng/ip.git (master)... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wanghejin/ip.git... -Aug 27, 2023 4:48:41 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [380/479] Analyzing https://github.com/tjingsheng/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wanghejin/ip.git to complete... -Aug 27, 2023 4:48:41 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tjingsheng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tjingsheng/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/itsNatTan/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ZD292/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/frrrrry/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alientian/ip.git completed! +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/MagnificentCreature/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [381/479] Analyzing https://github.com/ZD292/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/itsNatTan/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SungMatt/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alientian/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [382/479] Analyzing https://github.com/frrrrry/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/itsNatTan/ip.git (master) completed! +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SungMatt/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [381/479] Analyzing https://github.com/ZD292/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MagnificentCreature/ip.git to complete... +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tjingsheng/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZD292/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZD292/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tjingsheng/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tjingsheng/ip.git (master) completed! +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [382/479] Analyzing https://github.com/alientian/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ZD292/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZD292/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZD292/ip.git (master) completed! -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [383/479] Analyzing https://github.com/alientian/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alientian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alientian/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/frrrrry/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/frrrrry/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/frrrrry/ip.git (master) completed! -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alientian/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alientian/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alientian/ip.git (master) completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/frrrrry/ip.git completed! +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/andrefoo/ip.git... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [383/479] Analyzing https://github.com/frrrrry/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/andrefoo/ip.git to complete... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/frrrrry/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/frrrrry/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wanghejin/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [384/479] Analyzing https://github.com/wanghejin/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tohpinren/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [384/479] Analyzing https://github.com/wanghejin/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tohpinren/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wanghejin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wanghejin/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/frrrrry/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/frrrrry/ip.git (master)... +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/frrrrry/ip.git (master) completed! +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SungMatt/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/andrefoo/ip.git completed! -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [385/479] Analyzing https://github.com/SungMatt/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/XihuaZ/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/XihuaZ/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... -Aug 27, 2023 4:48:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SungMatt/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SungMatt/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wanghejin/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wanghejin/ip.git (master)... -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wanghejin/ip.git (master) completed! -Aug 27, 2023 4:48:42 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MagnificentCreature/ip.git completed! +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xavierpok/ip.git... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [386/479] Analyzing https://github.com/MagnificentCreature/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xavierpok/ip.git to complete... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MagnificentCreature/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MagnificentCreature/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/andrefoo/ip.git completed! +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SungMatt/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bkjwjason/ip.git... +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bkjwjason/ip.git to complete... +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SungMatt/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SungMatt/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [387/479] Analyzing https://github.com/andrefoo/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/andrefoo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/andrefoo/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MagnificentCreature/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/MagnificentCreature/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MagnificentCreature/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/andrefoo/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/andrefoo/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/andrefoo/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tohpinren/ip.git completed! -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [388/479] Analyzing https://github.com/tohpinren/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Choonyan02/ip.git... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [388/479] Analyzing https://github.com/tohpinren/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/andrefoo/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/andrefoo/ip.git (master) completed! +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Choonyan02/ip.git to complete... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tohpinren/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tohpinren/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xavierpok/ip.git completed! -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/XihuaZ/ip.git completed! -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [389/479] Analyzing https://github.com/xavierpok/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/aarontxz/ip.git... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bkjwjason/ip.git completed! -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [389/479] Analyzing https://github.com/XihuaZ/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/aarontxz/ip.git to complete... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tohpinren/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tayian/ip.git... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... -Aug 27, 2023 4:48:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tohpinren/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tohpinren/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [390/479] Analyzing https://github.com/XihuaZ/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/XihuaZ/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/XihuaZ/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xavierpok/ip.git completed! +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [390/479] Analyzing https://github.com/xavierpok/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jianyangg/ip.git... +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/XihuaZ/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jianyangg/ip.git to complete... +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/XihuaZ/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/XihuaZ/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xavierpok/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xavierpok/ip.git (master)... +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bkjwjason/ip.git completed! +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tayian/ip.git... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [391/479] Analyzing https://github.com/bkjwjason/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayian/ip.git to complete... +Aug 28, 2023 1:15:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bkjwjason/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bkjwjason/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bkjwjason/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! -Aug 27, 2023 4:48:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bkjwjason/ip.git (master)... -Aug 27, 2023 4:48:43 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bkjwjason/ip.git (master) completed! -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xavierpok/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Choonyan02/ip.git completed! -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wnchan/ip.git... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [392/479] Analyzing https://github.com/Choonyan02/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wnchan/ip.git... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wnchan/ip.git to complete... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xavierpok/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xavierpok/ip.git (master) completed! +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Choonyan02/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Choonyan02/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/aarontxz/ip.git completed! -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jweewee/ip.git... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [393/479] Analyzing https://github.com/aarontxz/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jweewee/ip.git to complete... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/aarontxz/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/aarontxz/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jianyangg/ip.git completed! -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cyaoxuan/ip.git... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayian/ip.git completed! -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [394/479] Analyzing https://github.com/jianyangg/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cyaoxuan/ip.git to complete... -Aug 27, 2023 4:48:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/aarontxz/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [394/479] Analyzing https://github.com/jianyangg/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Choonyan02/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Choonyan02/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Choonyan02/ip.git (master) completed! -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [395/479] Analyzing https://github.com/tayian/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jianyangg/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jianyangg/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aarontxz/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aarontxz/ip.git (master) completed! +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jianyangg/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jianyangg/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jianyangg/ip.git (master) completed! -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tayian/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tayian/ip.git (master)... -Aug 27, 2023 4:48:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tayian/ip.git (master) completed! -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayian/ip.git completed! +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [395/479] Analyzing https://github.com/tayian/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/anthonytamzil/ip.git... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/anthonytamzil/ip.git to complete... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tayian/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tayian/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wnchan/ip.git completed! -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CelestineTan03/ip.git... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [396/479] Analyzing https://github.com/wnchan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jweewee/ip.git completed! +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CelestineTan03/ip.git to complete... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tayian/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wnchan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wnchan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jweewee/ip.git completed! -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tayian/ip.git (master)... +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tayian/ip.git (master) completed! +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [397/479] Analyzing https://github.com/Jweewee/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saltedfishxx/ip.git... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/saltedfishxx/ip.git to complete... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jweewee/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jweewee/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cyaoxuan/ip.git completed! +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/euchangxian/ip.git... +Aug 28, 2023 1:15:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/euchangxian/ip.git to complete... -Aug 27, 2023 4:48:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wnchan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wnchan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wnchan/ip.git (master) completed! -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [398/479] Analyzing https://github.com/cyaoxuan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [399/479] Analyzing https://github.com/anthonytamzil/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cyaoxuan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cyaoxuan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jweewee/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jweewee/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jweewee/ip.git (master) completed! +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cyaoxuan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cyaoxuan/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cyaoxuan/ip.git (master) completed! -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/anthonytamzil/ip.git completed! +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [399/479] Analyzing https://github.com/anthonytamzil/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AlagappanRa/ip.git... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AlagappanRa/ip.git to complete... +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/anthonytamzil/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/anthonytamzil/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [400/479] Analyzing https://github.com/saltedfishxx/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/anthonytamzil/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/anthonytamzil/ip.git (master)... -Aug 27, 2023 4:48:45 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/anthonytamzil/ip.git (master) completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CelestineTan03/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ken-Lai/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [400/479] Analyzing https://github.com/CelestineTan03/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Ken-Lai/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/euchangxian/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [401/479] Analyzing https://github.com/euchangxian/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/felibunnyy/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [401/479] Analyzing https://github.com/CelestineTan03/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/felibunnyy/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/saltedfishxx/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/euchangxian/ip.git completed! +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/itssisi/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamz903/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/itssisi/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [402/479] Analyzing https://github.com/AlagappanRa/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AlagappanRa/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AlagappanRa/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [403/479] Analyzing https://github.com/saltedfishxx/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/saltedfishxx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/saltedfishxx/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CelestineTan03/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CelestineTan03/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "felibunnyy/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/felibunnyy/ip.git' 'repos/felibunnyy_ip/ip_bare' on path . : Cloning into bare repository 'repos/felibunnyy_ip/ip_bare'... @@ -7398,77 +7368,67 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamz903/ip.git... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CelestineTan03/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamz903/ip.git to complete... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CelestineTan03/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CelestineTan03/ip.git (master) completed! +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [402/479] Analyzing https://github.com/euchangxian/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saltedfishxx/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saltedfishxx/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/euchangxian/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/euchangxian/ip.git (master)... +Aug 28, 2023 1:15:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saltedfishxx/ip.git (master) completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/euchangxian/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/euchangxian/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/euchangxian/ip.git (master) completed! +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AlagappanRa/ip.git completed! +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [403/479] Analyzing https://github.com/AlagappanRa/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kevin-Liusx/ip.git... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Kevin-Liusx/ip.git to complete... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ken-Lai/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [404/479] Analyzing https://github.com/Ken-Lai/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Propene-Dan/ip.git... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AlagappanRa/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AlagappanRa/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Propene-Dan/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ken-Lai/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ken-Lai/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamz903/ip.git completed! -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [405/479] Analyzing https://github.com/jamz903/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/itssisi/ip.git completed! +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChuanXinNg/ip.git... -Aug 27, 2023 4:48:46 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChuanXinNg/ip.git to complete... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jamz903/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jamz903/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ken-Lai/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... -Aug 27, 2023 4:48:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/itssisi/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [406/479] Analyzing https://github.com/itssisi/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/itssisi/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/itssisi/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [407/479] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "Propene-Dan/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/Propene-Dan/ip.git' 'repos/Propene-Dan_ip/ip_bare' on path . : Cloning into bare repository 'repos/Propene-Dan_ip/ip_bare'... @@ -7484,1219 +7444,1259 @@ fatal: could not read Username for 'https://github.com': No such device or addre at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829) -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kenvynKwek/ip.git... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kenvynKwek/ip.git to complete... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ken-Lai/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ken-Lai/ip.git (master) completed! +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [405/479] Analyzing https://github.com/itssisi/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AlagappanRa/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamz903/ip.git completed! +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ruizhi2001/ip.git... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AlagappanRa/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AlagappanRa/ip.git (master) completed! +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/itssisi/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/itssisi/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [406/479] Analyzing https://github.com/jamz903/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ruizhi2001/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jamz903/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jamz903/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/itssisi/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamz903/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/itssisi/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/itssisi/ip.git (master) completed! +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamz903/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamz903/ip.git (master) completed! +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Kevin-Liusx/ip.git completed! +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/prawnzyy/ip.git... +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [407/479] Analyzing https://github.com/Kevin-Liusx/ip.git (master)... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/prawnzyy/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kevin-Liusx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kevin-Liusx/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/itssisi/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/itssisi/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/itssisi/ip.git (master) completed! -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Kevin-Liusx/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Kevin-Liusx/ip.git (master) completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChuanXinNg/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/saraozn/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [408/479] Analyzing https://github.com/ChuanXinNg/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/saraozn/ip.git... +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/saraozn/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuanXinNg/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuanXinNg/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kenvynKwek/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nicholastng010601/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [409/479] Analyzing https://github.com/kenvynKwek/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nicholastng010601/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ruizhi2001/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DistractedCat/ip.git... -Aug 27, 2023 4:48:47 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kenvynKwek/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kenvynKwek/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/prawnzyy/ip.git completed! -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DistractedCat/ip.git to complete... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... -Aug 27, 2023 4:48:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChuanXinNg/ip.git (master)... -Aug 27, 2023 4:48:47 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChuanXinNg/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChuanXinNg/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [410/479] Analyzing https://github.com/Ruizhi2001/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ruizhi2001/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ruizhi2001/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kenvynKwek/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kenvynKwek/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kenvynKwek/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/prawnzyy/ip.git completed! +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yezkez10/ip.git... +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [411/479] Analyzing https://github.com/prawnzyy/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yezkez10/ip.git to complete... +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/prawnzyy/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/prawnzyy/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ruizhi2001/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ruizhi2001/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ruizhi2001/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/prawnzyy/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/prawnzyy/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/saraozn/ip.git completed! -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [412/479] Analyzing https://github.com/saraozn/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/revdrag/ip.git... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [412/479] Analyzing https://github.com/saraozn/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/revdrag/ip.git to complete... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saraozn/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saraozn/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/DistractedCat/ip.git completed! +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saraozn/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saraozn/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saraozn/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nicholastng010601/ip.git completed! -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alvinlim277/ip.git... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [413/479] Analyzing https://github.com/nicholastng010601/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/alvinlim277/ip.git to complete... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [413/479] Analyzing https://github.com/DistractedCat/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/prawnzyy/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/prawnzyy/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/prawnzyy/ip.git (master) completed! +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [414/479] Analyzing https://github.com/nicholastng010601/ip.git (master)... +Aug 28, 2023 1:15:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicholastng010601/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicholastng010601/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yezkez10/ip.git completed! -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JasonRay168/ip.git... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [414/479] Analyzing https://github.com/yezkez10/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JasonRay168/ip.git to complete... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/DistractedCat/ip.git completed! -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/billieboy7/ip.git... -Aug 27, 2023 4:48:48 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/billieboy7/ip.git to complete... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [415/479] Analyzing https://github.com/DistractedCat/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! -Aug 27, 2023 4:48:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DistractedCat/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DistractedCat/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DistractedCat/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DistractedCat/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/DistractedCat/ip.git (master) completed! -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [415/479] Analyzing https://github.com/yezkez10/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/revdrag/ip.git completed! -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [416/479] Analyzing https://github.com/revdrag/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nicholastng010601/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yezkez10/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yezkez10/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jannnice/ip.git... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nicholastng010601/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nicholastng010601/ip.git (master) completed! +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [416/479] Analyzing https://github.com/revdrag/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jannnice/ip.git to complete... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/revdrag/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/revdrag/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yezkez10/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yezkez10/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yezkez10/ip.git (master) completed! +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/revdrag/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alvinlim277/ip.git completed! -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [417/479] Analyzing https://github.com/alvinlim277/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/evanyan13/ip.git... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [417/479] Analyzing https://github.com/alvinlim277/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/evanyan13/ip.git to complete... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/revdrag/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/revdrag/ip.git (master) completed! +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alvinlim277/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alvinlim277/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JasonRay168/ip.git completed! -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/samuelim01/ip.git... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [418/479] Analyzing https://github.com/JasonRay168/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/samuelim01/ip.git to complete... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JasonRay168/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JasonRay168/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/billieboy7/ip.git completed! -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dinde2004/ip.git... -Aug 27, 2023 4:48:49 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dinde2004/ip.git to complete... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alvinlim277/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alvinlim277/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alvinlim277/ip.git (master) completed! -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [419/479] Analyzing https://github.com/billieboy7/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billieboy7/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billieboy7/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JasonRay168/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JasonRay168/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JasonRay168/ip.git (master) completed! -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... -Aug 27, 2023 4:48:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jannnice/ip.git completed! -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [420/479] Analyzing https://github.com/jannnice/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/seanpzk/ip.git... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [420/479] Analyzing https://github.com/jannnice/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/seanpzk/ip.git to complete... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/billieboy7/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannnice/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannnice/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jannnice/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jannnice/ip.git (master) completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/billieboy7/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/billieboy7/ip.git (master) completed! +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/evanyan13/ip.git completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [421/479] Analyzing https://github.com/evanyan13/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KumChaiYin/ip.git... +Aug 28, 2023 1:15:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jannnice/ip.git (master)... +Aug 28, 2023 1:15:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KumChaiYin/ip.git to complete... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/samuelim01/ip.git completed! -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jannnice/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jannnice/ip.git (master) completed! +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/evanyan13/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/evanyan13/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/samuelim01/ip.git completed! +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [422/479] Analyzing https://github.com/samuelim01/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lsyurea/ip.git... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lsyurea/ip.git to complete... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/samuelim01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/samuelim01/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dinde2004/ip.git completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Sasmik23/ip.git... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Sasmik23/ip.git to complete... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/evanyan13/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/evanyan13/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/evanyan13/ip.git (master) completed! -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [423/479] Analyzing https://github.com/dinde2004/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dinde2004/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dinde2004/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/samuelim01/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/seanpzk/ip.git completed! -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/geraldngjx/ip.git... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepos -INFO: [424/479] Analyzing https://github.com/seanpzk/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/geraldngjx/ip.git to complete... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/samuelim01/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/samuelim01/ip.git (master) completed! +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [424/479] Analyzing https://github.com/seanpzk/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dinde2004/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/seanpzk/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/seanpzk/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dinde2004/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dinde2004/ip.git (master) completed! +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/seanpzk/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... -Aug 27, 2023 4:48:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KumChaiYin/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [425/479] Analyzing https://github.com/KumChaiYin/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lululwtv/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lsyurea/ip.git completed! +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/seanpzk/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/seanpzk/ip.git (master) completed! +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lululwtv/ip.git to complete... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [426/479] Analyzing https://github.com/lsyurea/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KumChaiYin/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KumChaiYin/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lsyurea/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/garylow2001/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [426/479] Analyzing https://github.com/lsyurea/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/garylow2001/ip.git to complete... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sasmik23/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lsyurea/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lsyurea/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sasmik23/ip.git completed! +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/leontan2/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/leontan2/ip.git to complete... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KumChaiYin/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lsyurea/ip.git (master)... +Aug 28, 2023 1:15:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KumChaiYin/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KumChaiYin/ip.git (master) completed! -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [427/479] Analyzing https://github.com/Sasmik23/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lsyurea/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lsyurea/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lsyurea/ip.git (master) completed! -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Sasmik23/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Sasmik23/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/geraldngjx/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [428/479] Analyzing https://github.com/geraldngjx/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wamps-jp/ip.git... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wamps-jp/ip.git to complete... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/geraldngjx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/geraldngjx/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sasmik23/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sasmik23/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sasmik23/ip.git (master) completed! +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/geraldngjx/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/geraldngjx/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/geraldngjx/ip.git (master) completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lululwtv/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/garylow2001/ip.git completed! +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dickongwd/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [429/479] Analyzing https://github.com/lululwtv/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [429/479] Analyzing https://github.com/garylow2001/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lululwtv/ip.git completed! +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dickongwd/ip.git to complete... -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/garylow2001/ip.git completed! -Aug 27, 2023 4:48:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [430/479] Analyzing https://github.com/garylow2001/ip.git (master)... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [430/479] Analyzing https://github.com/lululwtv/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jacksonyuan256/ip.git... -Aug 27, 2023 4:48:51 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leontan2/ip.git completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jacksonyuan256/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/garylow2001/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/garylow2001/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lululwtv/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lululwtv/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leontan2/ip.git completed! +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/suryanshkushwaha/ip.git... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/suryanshkushwaha/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lululwtv/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/lululwtv/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/lululwtv/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [431/479] Analyzing https://github.com/leontan2/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/garylow2001/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/garylow2001/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/garylow2001/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wamps-jp/ip.git completed! -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [432/479] Analyzing https://github.com/wamps-jp/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wr1159/ip.git... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [432/479] Analyzing https://github.com/wamps-jp/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wr1159/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leontan2/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leontan2/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wamps-jp/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wamps-jp/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wamps-jp/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wamps-jp/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wamps-jp/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leontan2/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leontan2/ip.git (master)... +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leontan2/ip.git (master) completed! +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dickongwd/ip.git completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [433/479] Analyzing https://github.com/dickongwd/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Nauxe/ip.git... +Aug 28, 2023 1:15:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Nauxe/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dickongwd/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dickongwd/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [434/479] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jacksonyuan256/ip.git completed! -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [434/479] Analyzing https://github.com/jacksonyuan256/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yyyaohhh/ip.git... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yyyaohhh/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... -Aug 27, 2023 4:48:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dickongwd/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dickongwd/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dickongwd/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [435/479] Analyzing https://github.com/jacksonyuan256/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jacksonyuan256/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jacksonyuan256/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jacksonyuan256/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jacksonyuan256/ip.git (master)... -Aug 27, 2023 4:48:52 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jacksonyuan256/ip.git (master) completed! -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wr1159/ip.git completed! -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [436/479] Analyzing https://github.com/wr1159/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/suryanshkushwaha/ip.git completed! +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhanyang01/ip.git... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [435/479] Analyzing https://github.com/suryanshkushwaha/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/czhiruo/ip.git... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [436/479] Analyzing https://github.com/wr1159/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/czhiruo/ip.git to complete... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhanyang01/ip.git to complete... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/suryanshkushwaha/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/suryanshkushwaha/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wr1159/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wr1159/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/suryanshkushwaha/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/suryanshkushwaha/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/suryanshkushwaha/ip.git (master) completed! +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wr1159/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wr1159/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wr1159/ip.git (master) completed! -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Nauxe/ip.git completed! -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/victorpengmx/ip.git... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [437/479] Analyzing https://github.com/Nauxe/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/victorpengmx/ip.git to complete... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Nauxe/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Nauxe/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhanyang01/ip.git completed! -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [438/479] Analyzing https://github.com/zhanyang01/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/longnguyentan/ip.git... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [438/479] Analyzing https://github.com/yyyaohhh/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/longnguyentan/ip.git to complete... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yyyaohhh/ip.git completed! -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [439/479] Analyzing https://github.com/yyyaohhh/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yyyaohhh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yyyaohhh/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Nauxe/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yyyaohhh/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Nauxe/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Nauxe/ip.git (master) completed! +Aug 28, 2023 1:15:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yyyaohhh/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yyyaohhh/ip.git (master) completed! -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhanyang01/ip.git completed! +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [439/479] Analyzing https://github.com/zhanyang01/ip.git (master)... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cikguseven/ip.git... +Aug 28, 2023 1:15:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cikguseven/ip.git to complete... +Aug 28, 2023 1:15:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhanyang01/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhanyang01/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/czhiruo/ip.git completed! -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [440/479] Analyzing https://github.com/czhiruo/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Eola-Z/ip.git... -Aug 27, 2023 4:48:53 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Eola-Z/ip.git to complete... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/czhiruo/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/czhiruo/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhanyang01/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhanyang01/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhanyang01/ip.git (master) completed! +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/czhiruo/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/longnguyentan/ip.git completed! +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/czhiruo/ip.git (master)... -Aug 27, 2023 4:48:53 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/czhiruo/ip.git (master) completed! -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/victorpengmx/ip.git completed! -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [441/479] Analyzing https://github.com/longnguyentan/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jibtaf/ip.git... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [441/479] Analyzing https://github.com/victorpengmx/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jibtaf/ip.git to complete... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/longnguyentan/ip.git completed! -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/victorpengmx/ip.git completed! +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/lipwei1808/ip.git... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [442/479] Analyzing https://github.com/longnguyentan/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Cikguseven/ip.git completed! -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [442/479] Analyzing https://github.com/victorpengmx/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/longnguyentan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/longnguyentan/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lipwei1808/ip.git to complete... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/victorpengmx/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/victorpengmx/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/victorpengmx/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Cikguseven/ip.git completed! +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/victorpengmx/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/victorpengmx/ip.git (master) completed! -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Mohammed-Faizzzz/ip.git... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [443/479] Analyzing https://github.com/Cikguseven/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/longnguyentan/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/victorpengmx/ip.git (master) completed! +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Mohammed-Faizzzz/ip.git to complete... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cikguseven/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cikguseven/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/longnguyentan/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/longnguyentan/ip.git (master) completed! -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cikguseven/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Eola-Z/ip.git completed! -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepos -INFO: [444/479] Analyzing https://github.com/Eola-Z/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Cikguseven/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dylkaw/ip.git... -Aug 27, 2023 4:48:54 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [444/479] Analyzing https://github.com/Eola-Z/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Cikguseven/ip.git (master) completed! +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dylkaw/ip.git to complete... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Eola-Z/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Eola-Z/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Eola-Z/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Eola-Z/ip.git (master)... -Aug 27, 2023 4:48:54 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Eola-Z/ip.git (master) completed! -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jibtaf/ip.git completed! -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [445/479] Analyzing https://github.com/jibtaf/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nikele2001/ip.git... +Aug 28, 2023 1:15:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Eola-Z/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Eola-Z/ip.git (master) completed! +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nikele2001/ip.git to complete... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lipwei1808/ip.git completed! +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [446/479] Analyzing https://github.com/lipwei1808/ip.git (master)... +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jibtaf/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jibtaf/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DeltonCheng/ip.git... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [446/479] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DeltonCheng/ip.git to complete... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lipwei1808/ip.git completed! -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jibtaf/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [447/479] Analyzing https://github.com/lipwei1808/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jibtaf/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jibtaf/ip.git (master) completed! -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lipwei1808/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lipwei1808/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Mohammed-Faizzzz/ip.git completed! +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [447/479] Analyzing https://github.com/Mohammed-Faizzzz/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChangruHenryQian/ip.git... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChangruHenryQian/ip.git to complete... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Mohammed-Faizzzz/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Mohammed-Faizzzz/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dylkaw/ip.git completed! -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [448/479] Analyzing https://github.com/dylkaw/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/craigtonlian/ip.git... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [448/479] Analyzing https://github.com/dylkaw/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/craigtonlian/ip.git to complete... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Mohammed-Faizzzz/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Mohammed-Faizzzz/ip.git (master) completed! +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dylkaw/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dylkaw/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lipwei1808/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dylkaw/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dylkaw/ip.git (master) completed! -Aug 27, 2023 4:48:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lipwei1808/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lipwei1808/ip.git (master) completed! -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nikele2001/ip.git completed! -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [449/479] Analyzing https://github.com/nikele2001/ip.git (master)... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruo-x/ip.git... -Aug 27, 2023 4:48:55 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [449/479] Analyzing https://github.com/nikele2001/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruo-x/ip.git to complete... -Aug 27, 2023 4:48:55 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nikele2001/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nikele2001/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DeltonCheng/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [450/479] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/iantsaii/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/iantsaii/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dylkaw/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dylkaw/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dylkaw/ip.git (master) completed! +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [450/479] Analyzing https://github.com/DeltonCheng/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DeltonCheng/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DeltonCheng/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChangruHenryQian/ip.git completed! +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wjacobw/ip.git... +Aug 28, 2023 1:15:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wjacobw/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DeltonCheng/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DeltonCheng/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DeltonCheng/ip.git (master) completed! +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [451/479] Analyzing https://github.com/ChangruHenryQian/ip.git (master)... +Aug 28, 2023 1:15:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChangruHenryQian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChangruHenryQian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/craigtonlian/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/angkyakdifp/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/angkyakdifp/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChangruHenryQian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChangruHenryQian/ip.git (master) completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [451/479] Analyzing https://github.com/DeltonCheng/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DeltonCheng/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DeltonCheng/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nikele2001/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruo-x/ip.git completed! +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChangruHenryQian/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nikele2001/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nikele2001/ip.git (master) completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [452/479] Analyzing https://github.com/craigtonlian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/brein62/ip.git... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChangruHenryQian/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChangruHenryQian/ip.git (master) completed! +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [453/479] Analyzing https://github.com/ruo-x/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iantsaii/ip.git completed! +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/craigtonlian/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/craigtonlian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DeltonCheng/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DeltonCheng/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DeltonCheng/ip.git (master) completed! -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/craigtonlian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/craigtonlian/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/craigtonlian/ip.git (master) completed! -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruo-x/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/brein62/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [453/479] Analyzing https://github.com/ruo-x/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/brein62/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ruo-x/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ruo-x/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wjacobw/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [454/479] Analyzing https://github.com/wjacobw/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nicrandomlee/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nicrandomlee/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iantsaii/ip.git completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... -Aug 27, 2023 4:48:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [454/479] Analyzing https://github.com/iantsaii/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ruo-x/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [455/479] Analyzing https://github.com/iantsaii/ip.git (master)... -Aug 27, 2023 4:48:56 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/iantsaii/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/iantsaii/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wjacobw/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wjacobw/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wjacobw/ip.git (master) completed! -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [456/479] Analyzing https://github.com/angkyakdifp/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruo-x/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruo-x/ip.git (master) completed! +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wjacobw/ip.git completed! +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Bryan-Goh/ip.git... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [455/479] Analyzing https://github.com/wjacobw/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Bryan-Goh/ip.git to complete... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wjacobw/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wjacobw/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/iantsaii/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/iantsaii/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iantsaii/ip.git (master) completed! -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/brein62/ip.git completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angkyakdifp/ip.git completed! +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kiatkat/ip.git... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [456/479] Analyzing https://github.com/brein62/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/MadLamprey/ip.git... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [457/479] Analyzing https://github.com/brein62/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kiatkat/ip.git to complete... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/MadLamprey/ip.git to complete... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/brein62/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/brein62/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wjacobw/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nicrandomlee/ip.git completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xyT-T/ip.git... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [458/479] Analyzing https://github.com/nicrandomlee/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brein62/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wjacobw/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wjacobw/ip.git (master) completed! +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [457/479] Analyzing https://github.com/angkyakdifp/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xyT-T/ip.git to complete... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/angkyakdifp/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/angkyakdifp/ip.git (master)... +Aug 28, 2023 1:15:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brein62/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/brein62/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brein62/ip.git (master) completed! +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [458/479] Analyzing https://github.com/nicrandomlee/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nicrandomlee/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nicrandomlee/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brein62/ip.git (master) completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kiatkat/ip.git completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [459/479] Analyzing https://github.com/kiatkat/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... -Aug 27, 2023 4:48:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... -Aug 27, 2023 4:48:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... -Aug 27, 2023 4:48:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/angkyakdifp/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/angkyakdifp/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/angkyakdifp/ip.git (master) completed! +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nicrandomlee/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nicrandomlee/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nicrandomlee/ip.git (master) completed! -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [460/479] Analyzing https://github.com/Bryan-Goh/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bryan-Goh/ip.git completed! +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jiakai-17/ip.git... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [459/479] Analyzing https://github.com/Bryan-Goh/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jiakai-17/ip.git to complete... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Bryan-Goh/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Bryan-Goh/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Bryan-Goh/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kiatkat/ip.git completed! +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [460/479] Analyzing https://github.com/kiatkat/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nreHieW/ip.git... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nreHieW/ip.git to complete... +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Bryan-Goh/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/MadLamprey/ip.git completed! -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bryan-Goh/ip.git (master) completed! +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [461/479] Analyzing https://github.com/MadLamprey/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nathanielcalimag/ip.git... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kiatkat/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kiatkat/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nathanielcalimag/ip.git to complete... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MadLamprey/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MadLamprey/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xyT-T/ip.git completed! -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Saezenn/ip.git... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [462/479] Analyzing https://github.com/xyT-T/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Saezenn/ip.git to complete... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kiatkat/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kiatkat/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kiatkat/ip.git (master) completed! +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [462/479] Analyzing https://github.com/xyT-T/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xyT-T/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xyT-T/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nreHieW/ip.git completed! -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jiakai-17/ip.git completed! -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marquestye/ip.git... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... -Aug 27, 2023 4:48:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/MadLamprey/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [463/479] Analyzing https://github.com/nreHieW/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/MadLamprey/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MadLamprey/ip.git (master) completed! -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [464/479] Analyzing https://github.com/jiakai-17/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nreHieW/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nreHieW/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xyT-T/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xyT-T/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xyT-T/ip.git (master) completed! +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jiakai-17/ip.git completed! +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [463/479] Analyzing https://github.com/jiakai-17/ip.git (master)... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jellywaiyan/ip.git... +Aug 28, 2023 1:15:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jellywaiyan/ip.git to complete... +Aug 28, 2023 1:15:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jiakai-17/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jiakai-17/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nreHieW/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nreHieW/ip.git (master)... -Aug 27, 2023 4:48:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nreHieW/ip.git (master) completed! -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Saezenn/ip.git completed! +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [464/479] Analyzing https://github.com/Saezenn/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marquestye/ip.git... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marquestye/ip.git to complete... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jiakai-17/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jiakai-17/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jiakai-17/ip.git (master) completed! -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nathanielcalimag/ip.git completed! -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [465/479] Analyzing https://github.com/nathanielcalimag/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tang-Moyan/ip.git... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tang-Moyan/ip.git to complete... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nathanielcalimag/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nathanielcalimag/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Saezenn/ip.git completed! -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [466/479] Analyzing https://github.com/Saezenn/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Saezenn/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Saezenn/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marquestye/ip.git completed! -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... -Aug 27, 2023 4:48:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [467/479] Analyzing https://github.com/jellywaiyan/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Saezenn/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Saezenn/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Saezenn/ip.git (master) completed! -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nathanielcalimag/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nathanielcalimag/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nathanielcalimag/ip.git (master) completed! +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jellywaiyan/ip.git completed! +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [466/479] Analyzing https://github.com/jellywaiyan/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DonovanJJ/ip.git... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DonovanJJ/ip.git to complete... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jellywaiyan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jellywaiyan/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [468/479] Analyzing https://github.com/marquestye/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marquestye/ip.git completed! +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Sebtey/ip.git... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [467/479] Analyzing https://github.com/marquestye/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Sebtey/ip.git to complete... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/marquestye/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:48:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/marquestye/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/marquestye/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/marquestye/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/marquestye/ip.git (master) completed! -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rionshocker/ip.git... +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [468/479] Analyzing https://github.com/Tang-Moyan/ip.git (master)... +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jellywaiyan/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rionshocker/ip.git to complete... +Aug 28, 2023 1:15:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jellywaiyan/ip.git (master)... -Aug 27, 2023 4:48:59 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jellywaiyan/ip.git (master) completed! -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tang-Moyan/ip.git completed! -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [469/479] Analyzing https://github.com/Tang-Moyan/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Tang-Moyan/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Tang-Moyan/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Tang-Moyan/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Tang-Moyan/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Tang-Moyan/ip.git (master) completed! -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nreHieW/ip.git completed! +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [469/479] Analyzing https://github.com/nreHieW/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tyouwei/ip.git... +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tyouwei/ip.git to complete... +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nreHieW/ip.git (master) does not contain a standalone config file. +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nreHieW/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nreHieW/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nreHieW/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nreHieW/ip.git (master) completed! +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DonovanJJ/ip.git completed! -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [470/479] Analyzing https://github.com/DonovanJJ/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner spawnCloneProcess +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Blizzeracz/ip.git... -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [470/479] Analyzing https://github.com/DonovanJJ/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Blizzeracz/ip.git to complete... -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Sebtey/ip.git completed! -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DonovanJJ/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DonovanJJ/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Sebtey/ip.git completed! +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [471/479] Analyzing https://github.com/Sebtey/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Sebtey/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Sebtey/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rionshocker/ip.git completed! -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [472/479] Analyzing https://github.com/rionshocker/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DonovanJJ/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/DonovanJJ/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [472/479] Analyzing https://github.com/rionshocker/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rionshocker/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rionshocker/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DonovanJJ/ip.git (master) completed! -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! -Aug 27, 2023 4:49:00 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Sebtey/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Sebtey/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Sebtey/ip.git (master) completed! +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tyouwei/ip.git completed! -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [473/479] Analyzing https://github.com/tyouwei/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tyouwei/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tyouwei/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rionshocker/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rionshocker/ip.git (master)... +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rionshocker/ip.git (master) completed! +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tyouwei/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tyouwei/ip.git (master)... -Aug 27, 2023 4:49:00 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tyouwei/ip.git (master) completed! -Aug 27, 2023 4:49:01 PM reposense.report.RepoCloner waitForCloneProcess +Aug 28, 2023 1:15:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Blizzeracz/ip.git completed! -Aug 27, 2023 4:49:01 PM reposense.report.ReportGenerator analyzeRepos +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [474/479] Analyzing https://github.com/Blizzeracz/ip.git (master)... -Aug 27, 2023 4:49:01 PM reposense.report.ReportGenerator updateRepoConfig +Aug 28, 2023 1:15:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Blizzeracz/ip.git (master) does not contain a standalone config file. -Aug 27, 2023 4:49:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Aug 28, 2023 1:15:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Blizzeracz/ip.git (master)... -Aug 27, 2023 4:49:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Aug 28, 2023 1:15:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Blizzeracz/ip.git (master)... -Aug 27, 2023 4:49:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Aug 28, 2023 1:15:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Blizzeracz/ip.git (master)... -Aug 27, 2023 4:49:01 PM reposense.report.ReportGenerator analyzeRepo +Aug 28, 2023 1:15:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Blizzeracz/ip.git (master) completed! -Aug 27, 2023 4:49:01 PM reposense.report.ReportGenerator generateReposReport +Aug 28, 2023 1:15:21 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Aug 27, 2023 4:49:01 PM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 37.95 second(s) +Aug 28, 2023 1:15:21 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 26.36 second(s) diff --git a/shishirbychapur_ip_master/authorship.json b/shishirbychapur_ip_master/authorship.json index 66c5b2b8..041187d9 100644 --- a/shishirbychapur_ip_master/authorship.json +++ b/shishirbychapur_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"T | X | drive car","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"D | O | study | Aug 15 2023 02:30 PM","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"E | O | play valorant | Aug 22 2023 02:00 PM - Aug 23 2023 03:00 PM","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"shishirbychapur":3}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" * The Deadline class containing tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" * with deadlines.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The deadline of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" public Deadline(String description, LocalDateTime deadline, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" return \"[Deadline] \" + super.toString()","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" return \"D\" + super.toFile() + \" | \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":45}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" * The Duke class contains the code for interacting","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" * with Jarvis, a task manager bot.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the user inputted message which is split on the basis of \u0027 \u0027 **/","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" private String[] split;","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the list of all tasks. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the stored data for Duke Class. **/","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" /** Constructor for Duke Class. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" public Duke() {","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" /** Sets up the file to store data in. **/","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" public void setup() {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" this.tasks \u003d this.storage.readData();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" /** The command to greet the user. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" public void greet() {","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Greetings, I am Jarvis. How may I assist you today?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" /** The command to provide the lines. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" public void indent() {","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"_______________________________________________________________\");","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" /** The command to add tasks into the tasks list. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" public void addCommand() {","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Added the following task to the list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(this.tasks.size() + \") \" + this.tasks.get(this.tasks.size() - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"You currently have \" + this.tasks.size() + \" tasks in your list.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" this.storage.writeData(this.tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" /** The command to mark tasks in the tasks list.","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" * @param index The index to mark","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" public void markCommand(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task is marked as complete:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + this.tasks.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" this.storage.writeData(this.tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":" /** The command to unmark tasks in the tasks list.","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":" * @param index The index to unmark","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" public void unmarkCommand(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task has been unmarked:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + this.tasks.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"shishirbychapur"},"content":" this.storage.writeData(this.tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"shishirbychapur"},"content":" /** The command to delete tasks from the tasks list.","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"shishirbychapur"},"content":" * @param index The index to delete","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"shishirbychapur"},"content":" public void deleteCommand(int index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task has been removed:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + this.tasks.get(index - 1).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"shishirbychapur"},"content":" /** The command to list all tasks from the tasks list. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"shishirbychapur"},"content":" public void list() {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"shishirbychapur"},"content":" if (this.tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Your task list is empty! Add a task to view it here.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Tasks displayed. Your guidance is requested.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"shishirbychapur"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"shishirbychapur"},"content":" System.out.println((i + 1) + \") \" + this.tasks.get(i).toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"shishirbychapur"},"content":" /** The function to mark/unmark tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"shishirbychapur"},"content":" * @param flag If flag is true, it is marked, otherwise unmarked.","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"shishirbychapur"},"content":" * @throws DukeException Throws error on incorrect input.","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"shishirbychapur"},"content":" public void mark(boolean flag) throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":108,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is receiving any input or receiving extra input","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"shishirbychapur"},"content":" if (this.split.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid mark command!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":112,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":113,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is not receiving a number.","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"shishirbychapur"},"content":" if (this.split[1].isBlank() || !Character.isDigit(this.split[1].charAt(0))) {","lastModifiedDate":"2023-08-24"},{"lineNumber":115,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"I cannot mark a character! Please enter a number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":116,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":118,"author":{"gitId":"shishirbychapur"},"content":" int index \u003d Character.getNumericValue(this.split[1].charAt(0));","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"shishirbychapur"},"content":" // Check if index is invalid or the task is already marked","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"shishirbychapur"},"content":" if (index \u003c\u003d 0 || this.tasks.size() \u003c\u003d index || this.tasks.get(index - 1).isCompleted() \u003d\u003d flag) {","lastModifiedDate":"2023-08-24"},{"lineNumber":122,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"The task you are trying to mark either doesnt exist, or is already marked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":123,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"shishirbychapur"},"content":" if (flag) {","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.get(index - 1).completeTask();","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"shishirbychapur"},"content":" markCommand(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.get(index - 1).revertTask();","lastModifiedDate":"2023-08-24"},{"lineNumber":130,"author":{"gitId":"shishirbychapur"},"content":" unmarkCommand(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":131,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"shishirbychapur"},"content":" /** The function to delete tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"shishirbychapur"},"content":" * @throws DukeException Throws error on incorrect input.","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"shishirbychapur"},"content":" public void delete() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":138,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is receiving any input or receiving extra input","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"shishirbychapur"},"content":" if (this.split.length !\u003d 2) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid delete command!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is not receiving a number.","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"shishirbychapur"},"content":" if (this.split[1].isBlank() || !Character.isDigit(this.split[1].charAt(0))) {","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"I cannot delete a character index! Please enter a number.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"shishirbychapur"},"content":" int index \u003d Character.getNumericValue(this.split[1].charAt(0));","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"shishirbychapur"},"content":" // Check if index is invalid or the task exists.","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"shishirbychapur"},"content":" if (index \u003c\u003d 0 || this.tasks.size() \u003c\u003d index) {","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"The task you are trying to delete either doesnt exist, or is already marked\");","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"shishirbychapur"},"content":" deleteCommand(index);","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.remove(index - 1);","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"shishirbychapur"},"content":" this.storage.writeData(this.tasks);","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":159,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"shishirbychapur"},"content":" /** The function to add todo tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":161,"author":{"gitId":"shishirbychapur"},"content":" * @throws DukeException Throws error on incorrect input.","lastModifiedDate":"2023-08-24"},{"lineNumber":162,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":163,"author":{"gitId":"shishirbychapur"},"content":" public void todo() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":164,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"shishirbychapur"},"content":" // Check if task is blank.","lastModifiedDate":"2023-08-24"},{"lineNumber":166,"author":{"gitId":"shishirbychapur"},"content":" if (this.split.length \u003c\u003d 1 || this.split[1].isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":167,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":169,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.add(new Todo(this.split[1]));","lastModifiedDate":"2023-08-24"},{"lineNumber":171,"author":{"gitId":"shishirbychapur"},"content":" this.addCommand();","lastModifiedDate":"2023-08-24"},{"lineNumber":172,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":173,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"shishirbychapur"},"content":" /** The function to add deadline tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"shishirbychapur"},"content":" * @throws DukeException Throws error on incorrect input.","lastModifiedDate":"2023-08-24"},{"lineNumber":176,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":177,"author":{"gitId":"shishirbychapur"},"content":" public void deadline() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":178,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":179,"author":{"gitId":"shishirbychapur"},"content":" if (this.split.length \u003c\u003d 1 || !this.split[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":180,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid task and deadline\");","lastModifiedDate":"2023-08-24"},{"lineNumber":181,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":182,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":183,"author":{"gitId":"shishirbychapur"},"content":" String[] task \u003d this.split[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":184,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":185,"author":{"gitId":"shishirbychapur"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid task and deadline.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":187,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":188,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":189,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":190,"author":{"gitId":"shishirbychapur"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.add(new Deadline(task[0], LocalDateTime.parse(task[1], formatter)));","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"shishirbychapur"},"content":" this.addCommand();","lastModifiedDate":"2023-08-24"},{"lineNumber":193,"author":{"gitId":"shishirbychapur"},"content":" } catch (DateTimeParseException exp) {","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Please enter the date \u0026 time in a valid format! (DD/MM/YY HHMM)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":196,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-27"},{"lineNumber":197,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":200,"author":{"gitId":"shishirbychapur"},"content":" /** The function to add event tasks.","lastModifiedDate":"2023-08-24"},{"lineNumber":201,"author":{"gitId":"shishirbychapur"},"content":" * @throws DukeException Throws error on incorrect input.","lastModifiedDate":"2023-08-24"},{"lineNumber":202,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":203,"author":{"gitId":"shishirbychapur"},"content":" public void event() throws DukeException {","lastModifiedDate":"2023-08-24"},{"lineNumber":204,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":205,"author":{"gitId":"shishirbychapur"},"content":" // Check if /from is present","lastModifiedDate":"2023-08-24"},{"lineNumber":206,"author":{"gitId":"shishirbychapur"},"content":" if (this.split.length \u003c\u003d 1 || !this.split[1].contains(\" /from \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"There is no task and/or from command present. Please try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":208,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":209,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":210,"author":{"gitId":"shishirbychapur"},"content":" String[] task \u003d this.split[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":211,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":212,"author":{"gitId":"shishirbychapur"},"content":" // Check if task entered is empty","lastModifiedDate":"2023-08-24"},{"lineNumber":213,"author":{"gitId":"shishirbychapur"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":214,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":215,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":216,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":217,"author":{"gitId":"shishirbychapur"},"content":" // Check if /to is present","lastModifiedDate":"2023-08-24"},{"lineNumber":218,"author":{"gitId":"shishirbychapur"},"content":" if (!task[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":219,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"There is no /to command present. Please try again.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":220,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":221,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":222,"author":{"gitId":"shishirbychapur"},"content":" String[] to \u003d task[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":223,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":224,"author":{"gitId":"shishirbychapur"},"content":" if (to.length \u003c\u003d 1 || to[1].isBlank() || to[0].isBlank()) {","lastModifiedDate":"2023-08-24"},{"lineNumber":225,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"There enter valid to \u0026 from dates\");","lastModifiedDate":"2023-08-24"},{"lineNumber":226,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":227,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":229,"author":{"gitId":"shishirbychapur"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yy HHmm\");","lastModifiedDate":"2023-08-27"},{"lineNumber":230,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.add(new Event(task[0], LocalDateTime.parse(to[0], formatter), LocalDateTime.parse(to[1], formatter)));","lastModifiedDate":"2023-08-27"},{"lineNumber":231,"author":{"gitId":"shishirbychapur"},"content":" this.addCommand();","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"shishirbychapur"},"content":" } catch (DateTimeParseException exc) {","lastModifiedDate":"2023-08-27"},{"lineNumber":233,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Enter the date \u0026 time in a valid format! (DD/MM/YY HHMM)\");","lastModifiedDate":"2023-08-27"},{"lineNumber":234,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":235,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":237,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":238,"author":{"gitId":"shishirbychapur"},"content":" /** The exit command when user types \"bye\" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":239,"author":{"gitId":"shishirbychapur"},"content":" public void exit() {","lastModifiedDate":"2023-08-20"},{"lineNumber":240,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":241,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"I shall now take my leave. Farewell!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-20"},{"lineNumber":243,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":244,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":245,"author":{"gitId":"shishirbychapur"},"content":" /** The function where user interacts with Jarvis using Scanner. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"shishirbychapur"},"content":" public void interact() {","lastModifiedDate":"2023-08-20"},{"lineNumber":247,"author":{"gitId":"shishirbychapur"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":248,"author":{"gitId":"shishirbychapur"},"content":" while (true) {","lastModifiedDate":"2023-08-20"},{"lineNumber":249,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":250,"author":{"gitId":"shishirbychapur"},"content":" this.split \u003d input.nextLine().split(\" \", 2);","lastModifiedDate":"2023-08-24"},{"lineNumber":251,"author":{"gitId":"shishirbychapur"},"content":" switch(this.split[0]) {","lastModifiedDate":"2023-08-24"},{"lineNumber":252,"author":{"gitId":"shishirbychapur"},"content":" case \"bye\":","lastModifiedDate":"2023-08-24"},{"lineNumber":253,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-20"},{"lineNumber":254,"author":{"gitId":"shishirbychapur"},"content":" case \"list\":","lastModifiedDate":"2023-08-24"},{"lineNumber":255,"author":{"gitId":"shishirbychapur"},"content":" this.list();","lastModifiedDate":"2023-08-20"},{"lineNumber":256,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":257,"author":{"gitId":"shishirbychapur"},"content":" case \"mark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"shishirbychapur"},"content":" this.mark(true);","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":260,"author":{"gitId":"shishirbychapur"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"shishirbychapur"},"content":" this.mark(false);","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":263,"author":{"gitId":"shishirbychapur"},"content":" case \"todo\":","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"shishirbychapur"},"content":" this.todo();","lastModifiedDate":"2023-08-22"},{"lineNumber":265,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":266,"author":{"gitId":"shishirbychapur"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-24"},{"lineNumber":267,"author":{"gitId":"shishirbychapur"},"content":" this.deadline();","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":269,"author":{"gitId":"shishirbychapur"},"content":" case \"event\":","lastModifiedDate":"2023-08-24"},{"lineNumber":270,"author":{"gitId":"shishirbychapur"},"content":" this.event();","lastModifiedDate":"2023-08-22"},{"lineNumber":271,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":272,"author":{"gitId":"shishirbychapur"},"content":" case \"delete\":","lastModifiedDate":"2023-08-24"},{"lineNumber":273,"author":{"gitId":"shishirbychapur"},"content":" this.delete();","lastModifiedDate":"2023-08-24"},{"lineNumber":274,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":275,"author":{"gitId":"shishirbychapur"},"content":" default:","lastModifiedDate":"2023-08-24"},{"lineNumber":276,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"I\u0027m sorry, I couldn\u0027t understand that. Please try again!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":277,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":278,"author":{"gitId":"shishirbychapur"},"content":" if (this.split[0].equals(\"bye\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":279,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":280,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":281,"author":{"gitId":"shishirbychapur"},"content":" } catch (DukeException exc) {","lastModifiedDate":"2023-08-24"},{"lineNumber":282,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-24"},{"lineNumber":283,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc.toString());","lastModifiedDate":"2023-08-24"},{"lineNumber":284,"author":{"gitId":"shishirbychapur"},"content":" this.indent();","lastModifiedDate":"2023-08-24"},{"lineNumber":285,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":286,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":287,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":288,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":289,"author":{"gitId":"shishirbychapur"},"content":" /** The main function where Jarvis is initialised.","lastModifiedDate":"2023-08-24"},{"lineNumber":290,"author":{"gitId":"shishirbychapur"},"content":" * @param args Input args.","lastModifiedDate":"2023-08-24"},{"lineNumber":291,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":292,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":293,"author":{"gitId":"shishirbychapur"},"content":" // Create a scanner object to read input","lastModifiedDate":"2023-08-20"},{"lineNumber":294,"author":{"gitId":"shishirbychapur"},"content":" Duke bot \u003d new Duke();","lastModifiedDate":"2023-08-20"},{"lineNumber":295,"author":{"gitId":"shishirbychapur"},"content":" bot.setup();","lastModifiedDate":"2023-08-27"},{"lineNumber":296,"author":{"gitId":"shishirbychapur"},"content":" bot.greet();","lastModifiedDate":"2023-08-20"},{"lineNumber":297,"author":{"gitId":"shishirbychapur"},"content":" bot.interact();","lastModifiedDate":"2023-08-20"},{"lineNumber":298,"author":{"gitId":"shishirbychapur"},"content":" bot.exit();","lastModifiedDate":"2023-08-20"},{"lineNumber":299,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"shishirbychapur":296,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The DukeException class contains the error","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * handling for Duke.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The error message. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" private String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" * @param message The description of the error message.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" return this.message;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shishirbychapur":27}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" * The Event class contains the tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" * with to and from date/time inputs.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" /** The from date/time **/","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" /** The to date/time **/","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" * @param from The from date/time","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" * @param to The to date/time","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" * @param from The from date/time.","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" * @param to The to date/time.","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" return \"[Event] \" + super.toString()","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" return \"E\" + super.toFile() + \" | \"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" + \" - \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":57}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private File folder;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" private File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" private final String PATH \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" public Storage() {","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" this.file \u003d new File(\"data/duke.txt\");","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" this.folder \u003d new File(\"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" // Directory doesn\u0027t exist","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" if (!this.directoryExists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" this.createDirectory();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" // File doesn\u0027t exist","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" if (!this.fileExists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" this.createFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" void createDirectory() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" folder.mkdir();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" void createFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" boolean directoryExists() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" java.nio.file.Path path \u003d java.nio.file.Paths.get(PATH, \"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" return java.nio.file.Files.exists(path);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" boolean fileExists() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" return this.file.exists();","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" ArrayList\u003cTask\u003e readData() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" Task task \u003d this.stringToTask(scanner.nextLine());","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" data.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":" } catch (FileNotFoundException exc) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" return data;","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":" void writeData(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":" writer.write(task.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"shishirbychapur"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"shishirbychapur"},"content":" } catch (IOException exc) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc);","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"shishirbychapur"},"content":" Task stringToTask(String line) {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"shishirbychapur"},"content":" String[] split \u003d line.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"shishirbychapur"},"content":" // Corrupted File","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"shishirbychapur"},"content":" if (split.length \u003c 3) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"shishirbychapur"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"shishirbychapur"},"content":" String type \u003d split[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"shishirbychapur"},"content":" String status \u003d split[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"shishirbychapur"},"content":" String action \u003d split[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"shishirbychapur"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"shishirbychapur"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\");","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"shishirbychapur"},"content":" switch(split[0]) {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"shishirbychapur"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Todo(action, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"shishirbychapur"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Deadline(action, LocalDateTime.parse(split[3], formatter), status);","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"shishirbychapur"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"shishirbychapur"},"content":" String[] interval \u003d split[3].split(\" - \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"shishirbychapur"},"content":" if (interval.length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"shishirbychapur"},"content":" task \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Event(action, LocalDateTime.parse(interval[0], formatter), LocalDateTime.parse(interval[1], formatter), status);","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"shishirbychapur"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"shishirbychapur"},"content":" task \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"shishirbychapur"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"shishirbychapur":118}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The Abstract Task class containing tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * of three types: Event, Deadline and Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The description of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" private String action;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The completion status of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private boolean completed;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" * @param action The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" public Task(String action) {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" /** The overloaded constructor","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" * @param action The description of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" public Task(String action, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d status.equals(\"X\");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" return \"[\" + (this.completed ? \"X\" : \" \") + \"] \" + this.action;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" return \" | \" + (this.completed ? \"X\" : \"O\") + \" | \" + this.action;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" /** The function to complete a task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" public void completeTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" /** The function to check status of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" * @return The status of completion.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" public boolean isCompleted() { return this.completed; }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" /**The function to revert a task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" public void revertTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"shishirbychapur":57}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The Todo class containing","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * tasks with no time limits.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" public Todo(String description, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" return \"[Todo] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" return \"T\" + super.toFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":35}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"hi","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"deadline drive car /by Sunday 2pm","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":4}}] +[{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"T | O | hi","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"T | O | drive car","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"D | O | study | Aug 15 2023 02:30 PM","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"E | O | study hard | Aug 27 2023 07:00 PM - Aug 27 2023 08:00 PM","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":4}},{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" private String till;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" private String from;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" private String type;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" // ToDo Constructor","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" public AddCommand(String description) {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" this.type \u003d \"todo\";","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" // Deadline Constructor","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" public AddCommand(String description, String till) {","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" this.till \u003d till;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" this.type \u003d \"deadline\";","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" // Event Constructor","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" public AddCommand(String description, String from, String till) {","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" this.description \u003d description;","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" this.till \u003d till;","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" this.type \u003d \"event\";","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" switch (this.type) {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" Task task1 \u003d new Todo(this.description);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" tasks.add(task1);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" ui.showAdd(tasks.size(), task1);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" storage.writeData(tasks.getAllTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" Task task2 \u003d new Deadline(this.description, ui.formatInputDate(this.till));","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" tasks.add(task2);","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" ui.showAdd(tasks.size(), task2);","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" storage.writeData(tasks.getAllTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" } catch (DateTimeParseException exp) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Please enter the date \u0026 time in a valid format! (DD/MM/YY HHMM)\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" Task task3 \u003d new Event(this.description, ui.formatInputDate(this.from), ui.formatInputDate(this.till));","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" tasks.add(task3);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" ui.showAdd(tasks.size(), task3);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" storage.writeData(tasks.getAllTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" } catch (DateTimeParseException exc) {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":" ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Enter the date \u0026 time in a valid format! (DD/MM/YY HHMM)\");","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":" ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":72}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public abstract class Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" public abstract boolean isExit();","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" * The Deadline class containing tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" * with deadlines.","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The deadline of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" public Deadline(String description, LocalDateTime deadline, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" return \"[Deadline] \" + super.toString()","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" + \" (by: \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" return \"D\" + super.toFile() + \" | \" + this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":45}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" private int index;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" // Check if index is invalid or the task exists.","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" if (tasks.size() \u003c index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"The task you are trying to delete either doesnt exist, or is already deleted!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" ui.showDelete(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" tasks.delete(index - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" storage.writeData(tasks.getAllTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":22}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" * The Duke class contains the code for interacting","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" * with Jarvis, a task manager bot.","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the list of all tasks. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" private TaskList tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the stored data for Duke Class. **/","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" /** Contains the UI for Duke Class **/","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" private Ui ui;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** Constructor for Duke Class. **/","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" this.tasks \u003d new TaskList(this.storage.readData());","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" /** The function where user interacts with Jarvis using Scanner. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" public void interact() {","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" while (!isExit) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" Command c \u003d Parser.parse(command);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" c.execute(this.tasks, this.ui, this.storage);","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" } catch (DukeException exc) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" /** The main function where Jarvis is initialised.","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" * @param args Input args.","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" Duke bot \u003d new Duke(\"data/tasks.txt\");","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" bot.interact();","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"shishirbychapur":47,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The DukeException class contains the error","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * handling for Duke.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The error message. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" private String message;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" * @param message The description of the error message.","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" DukeException(String message) {","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" super(message);","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" return this.message;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"shishirbychapur":27}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" * The Event class contains the tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" * with to and from date/time inputs.","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" *","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" /** The from date/time **/","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime from;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" /** The to date/time **/","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" private LocalDateTime to;","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" * @param from The from date/time","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" * @param to The to date/time","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" * @param from The from date/time.","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" * @param to The to date/time.","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" this.from \u003d from;","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" this.to \u003d to;","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" return \"[Event] \" + super.toString()","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" + \" (from: \" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" + \" to: \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\")) + \")\";","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" return \"E\" + super.toFile() + \" | \"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" + this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"))","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" + \" - \" + this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":57}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" ui.leave();","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" return true;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":11}},{"path":"src/main/java/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" private String message;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" public IncorrectCommand(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(this.message);","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":17}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" ui.showList(tasks.size());","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" tasks.list();","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" ui.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":13}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" private int index;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" private boolean flag;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" MarkCommand(int index, String type) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" this.index \u003d index;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" this.flag \u003d type.equals(\"mark\");","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" // Check if index is invalid or the task is already marked","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" if (tasks.size() \u003c\u003d index || tasks.getTask(index - 1).isCompleted() \u003d\u003d flag) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" throw new DukeException(\"The task you are trying to mark either doesnt exist, or is already marked\");","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" if (flag) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" tasks.mark(index - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" ui.showMark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" tasks.unmark(index - 1);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" ui.showUnmark(index, tasks.getTask(index - 1));","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" storage.writeData(tasks.getAllTasks());","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" public boolean isExit() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" return false;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":32}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"public class Parser {","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" public static Command parse(String fullCommand) throws DukeException {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" String[] split \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" Command c \u003d null;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" switch(split[0]) {","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" case \"bye\":","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" c \u003d new ExitCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" case \"list\":","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" c \u003d new ListCommand();","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" case \"mark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" case \"unmark\":","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" c \u003d validateIndex(split, true);","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" case \"todo\":","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" case \"deadline\":","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" case \"event\":","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" c \u003d validateTask(split);","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" case \"delete\":","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" c \u003d validateIndex(split, false);","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" default:","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" c \u003d new IncorrectCommand(\"I\u0027m sorry, I couldn\u0027t understand that. Please try again!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" return c;","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" public static Command validateIndex(String[] split, boolean flag) {","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is receiving any input or receiving extra input","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" if (split.length !\u003d 2 || split[1].isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a valid mark command!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" // Check if mark is not receiving a number.","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" if (!Character.isDigit(split[1].charAt(0))) {","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"I cannot mark a character! Please enter a number.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" int index \u003d Character.getNumericValue(split[1].charAt(0));","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" // Check if index is greater than 0.","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" if (index \u003c\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a number greater than 0!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" return flag ? new MarkCommand(index, split[0]) : new DeleteCommand(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" public static Command validateTask(String[] split) {","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" if (split.length \u003d\u003d 1 || split[1].isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" if (split[0].equals(\"deadline\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" if (!split[1].contains(\" /by \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a /by command to depict the deadline.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":" String[] task \u003d split[1].split(\" /by \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a valid task and/or deadline.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":" return new AddCommand(task[0], task[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"shishirbychapur"},"content":" } else if (split[0].equals(\"event\")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"shishirbychapur"},"content":" if (!split[1].contains(\" /from \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a /from command to depict the deadline.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"shishirbychapur"},"content":" String[] task \u003d split[1].split(\" /from \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"shishirbychapur"},"content":" // Check if task entered is empty","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"shishirbychapur"},"content":" if (task.length \u003c\u003d 1 || task[1].isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter a valid task.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"shishirbychapur"},"content":" // Check if /to is present","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"shishirbychapur"},"content":" if (!task[1].contains(\" /to \")) {","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"There is no /to command present. Please try again.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"shishirbychapur"},"content":" String[] to \u003d task[1].split(\" /to \", 2);","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"shishirbychapur"},"content":" if (to.length \u003c\u003d 1 || to[1].isBlank() || to[0].isBlank()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"shishirbychapur"},"content":" return new IncorrectCommand(\"Please enter valid to \u0026 from dates\");","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":97,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":98,"author":{"gitId":"shishirbychapur"},"content":" return new AddCommand(task[0], to[0], to[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":99,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":100,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":101,"author":{"gitId":"shishirbychapur"},"content":" return new AddCommand(split[1]);","lastModifiedDate":"2023-08-28"},{"lineNumber":102,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":103,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":104,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":105}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private File folder;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" private File file;","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" private final String PATH \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" public Storage(String filePath) {","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" this.folder \u003d new File(\"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" // Directory doesn\u0027t exist","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" if (!this.directoryExists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" this.createDirectory();","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" // File doesn\u0027t exist","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" if (!this.fileExists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" this.createFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" void createDirectory() {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" this.folder.mkdir();","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" void createFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" this.file.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" } catch (IOException err) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(err);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" boolean directoryExists() {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" java.nio.file.Path path \u003d java.nio.file.Paths.get(PATH, \"data\");","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" return java.nio.file.Files.exists(path);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" boolean fileExists() {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" return this.file.exists();","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" ArrayList\u003cTask\u003e readData() {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" ArrayList\u003cTask\u003e data \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" Scanner scanner \u003d new Scanner(this.file);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" Task task \u003d this.stringToTask(scanner.nextLine());","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" data.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":" } catch (FileNotFoundException exc) {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" return data;","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":" void writeData(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" FileWriter writer \u003d new FileWriter(this.file);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":" for (Task task: tasks) {","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":" writer.write(task.toFile() + System.lineSeparator());","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"shishirbychapur"},"content":" writer.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"shishirbychapur"},"content":" } catch (IOException exc) {","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(exc);","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"shishirbychapur"},"content":" Task stringToTask(String line) {","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"shishirbychapur"},"content":" String[] split \u003d line.split(\" \\\\| \", 4);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"shishirbychapur"},"content":" // Corrupted File","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"shishirbychapur"},"content":" if (split.length \u003c 3) {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"shishirbychapur"},"content":" return null;","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"shishirbychapur"},"content":" String type \u003d split[0];","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"shishirbychapur"},"content":" String status \u003d split[1];","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"shishirbychapur"},"content":" String action \u003d split[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"shishirbychapur"},"content":" Task task;","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"shishirbychapur"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy hh:mm a\");","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"shishirbychapur"},"content":" switch(split[0]) {","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"shishirbychapur"},"content":" case \"T\":","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Todo(action, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"shishirbychapur"},"content":" case \"D\":","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Deadline(action, LocalDateTime.parse(split[3], formatter), status);","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"shishirbychapur"},"content":" case \"E\":","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"shishirbychapur"},"content":" String[] interval \u003d split[3].split(\" - \", 2);","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"shishirbychapur"},"content":" if (interval.length \u003c 2) {","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"shishirbychapur"},"content":" task \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"shishirbychapur"},"content":" task \u003d new Event(action, LocalDateTime.parse(interval[0], formatter), LocalDateTime.parse(interval[1], formatter), status);","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"shishirbychapur"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"shishirbychapur"},"content":" default:","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"shishirbychapur"},"content":" task \u003d null;","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"shishirbychapur"},"content":" return task;","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"shishirbychapur":118}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The Abstract Task class containing tasks","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * of three types: Event, Deadline and Todo","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"abstract public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The description of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" private String action;","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" /** The completion status of the task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" private boolean completed;","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" * @param action The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" public Task(String action) {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" /** The overloaded constructor","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" * @param action The description of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion of the task","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" public Task(String action, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" this.action \u003d action;","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d status.equals(\"X\");","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" return \"[\" + (this.completed ? \"X\" : \" \") + \"] \" + this.action;","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" return \" | \" + (this.completed ? \"X\" : \"O\") + \" | \" + this.action;","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" /** The function to complete a task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" public void completeTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d true;","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" /** The function to check status of a task.","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" * @return The status of completion.","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" public boolean isCompleted() { return this.completed; }","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" /**The function to revert a task. **/","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" public void revertTask() {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" this.completed \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"shishirbychapur":57}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"public class TaskList {","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" public void add(Task newTask) {","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" public void mark(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.get(index).completeTask();","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" public void unmark(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.get(index).revertTask();","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" public void list() {","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" System.out.println((i + 1) + \") \" + this.tasks.get(i).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" public void delete(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" this.tasks.remove(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" public int size() {","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" return this.tasks.size();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" return this.tasks.get(index);","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" public ArrayList\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" return this.tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":43}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"/**","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":" * The Todo class containing","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":" * tasks with no time limits.","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":" * @author: Shishir","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":" public Todo(String description) {","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" super(description);","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":" /** The constructor.","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" * @param description The description of the task.","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" * @param status The status of completion.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" **/","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" public Todo(String description, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":" super(description, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" /** The string representation of the task.","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" * @return The string representation","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" return \"[Todo] \" + super.toString();","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" public String toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" return \"T\" + super.toFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":35}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"public class Ui {","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":" private Scanner input;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"shishirbychapur"},"content":" public Ui() {","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"shishirbychapur"},"content":" this.input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"shishirbychapur"},"content":" public String readCommand() {","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"shishirbychapur"},"content":" return this.input.nextLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"shishirbychapur"},"content":" /** The command to provide the lines. **/","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"shishirbychapur"},"content":" public void showLine() {","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"_______________________________________________________________\");","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"shishirbychapur"},"content":" /** The command to greet the user. **/","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"shishirbychapur"},"content":" public void greet() {","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Greetings, I am Jarvis. How may I assist you today?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"shishirbychapur"},"content":" /** The exit command when user types \"bye\" **/","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"shishirbychapur"},"content":" public void leave() {","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"I shall now take my leave. Farewell!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"shishirbychapur"},"content":" /** The command to show added tasks in the tasks list.","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"shishirbychapur"},"content":" * @param size The index to mark","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"shishirbychapur"},"content":" public void showAdd(int size, Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Added the following task to the list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(size + \") \" + task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"You currently have \" + size + \" tasks in your list.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"shishirbychapur"},"content":" /** The command to mark tasks in the tasks list.","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"shishirbychapur"},"content":" * @param index The index to mark","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"shishirbychapur"},"content":" public void showMark(int index, Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task is marked as complete:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"shishirbychapur"},"content":" /** The command to mark tasks in the tasks list.","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"shishirbychapur"},"content":" * @param index The index to mark","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"shishirbychapur"},"content":" * **/","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"shishirbychapur"},"content":" public void showDelete(int index, Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task has been removed:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"shishirbychapur"},"content":" public void showUnmark(int index, Task task) {","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"The following task has been unmarked:\");","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(index + \") \" + task.toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Is there anything else I can assist you with?\");","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"shishirbychapur"},"content":" public void showList(int size) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"shishirbychapur"},"content":" if (size \u003d\u003d 0) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Your task list is empty! Add a task to view it here.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"shishirbychapur"},"content":" } else {","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(\"Tasks displayed. Your guidance is requested.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"shishirbychapur"},"content":" public void throwException(String message) {","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"shishirbychapur"},"content":" System.out.println(message);","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"shishirbychapur"},"content":" this.showLine();","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":91,"author":{"gitId":"shishirbychapur"},"content":" public LocalDateTime formatInputDate(String date) {","lastModifiedDate":"2023-08-28"},{"lineNumber":92,"author":{"gitId":"shishirbychapur"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yy HHmm\");","lastModifiedDate":"2023-08-28"},{"lineNumber":93,"author":{"gitId":"shishirbychapur"},"content":" return LocalDateTime.parse(date, formatter);","lastModifiedDate":"2023-08-28"},{"lineNumber":94,"author":{"gitId":"shishirbychapur"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":95,"author":{"gitId":"shishirbychapur"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"shishirbychapur"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"shishirbychapur":96}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"shishirbychapur"},"content":"deadline study CS2100 /by 28/08/23 1800","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"shishirbychapur"},"content":"todo drive car","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"shishirbychapur"},"content":"event play badminton /from 29/08/23 1500 /to 29/08/23 1800","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"shishirbychapur"},"content":"mark 1","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"shishirbychapur"},"content":"unmark 1","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"shishirbychapur"},"content":"delete 2","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"shishirbychapur"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"shishirbychapur":7}}] diff --git a/shishirbychapur_ip_master/commits.json b/shishirbychapur_ip_master/commits.json index 0d035d40..9403e596 100644 --- a/shishirbychapur_ip_master/commits.json +++ b/shishirbychapur_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"shishirbychapur":[{"date":"2023-08-20","commitResults":[{"hash":"ea6536ef35c17abe2b5af2b2cc14ea0682e5e421","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"edfdabf725e35e5810591b05f348ce1aa8d35134","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":11}}},{"hash":"2510c57fae75d394e967b8e4af5182b985dc01f3","isMergeCommit":false,"messageTitle":"Add/List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":4}}}]},{"date":"2023-08-21","commitResults":[{"hash":"7872e1dc2339c86d88abe6c222c2062dde1eb093","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":4}}}]},{"date":"2023-08-22","commitResults":[{"hash":"da0057efd58a0d9832f6cf67dfe370d6a85ef59d","isMergeCommit":false,"messageTitle":"ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":16}}},{"hash":"5aa47031969160b0942025990de843021d8d6c15","isMergeCommit":false,"messageTitle":"Setup Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":9,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bb80dc2722a52e326b9d35112c58599580fa54a8","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":153}}},{"hash":"c90660e6631be95a44f759ec2c5b35509e400ce7","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}},{"hash":"d8252f80dcb00e95abc64fec0ea065fc7fdcd393","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"b5d3b2ec95c34bbb2141b386258b13abf400e5ed","isMergeCommit":false,"messageTitle":"Add File Compatibility","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":186,"deletions":1}}},{"hash":"73aa0eb2fb6025b0ac5f7ddb5f059e9568ed31d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c8afeabe1f56015918ffcb03b9cc8593ccc4f53c","isMergeCommit":false,"messageTitle":"Add Date/Time Functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":51,"deletions":22}}},{"hash":"4bbb47bf88c3f9ec319bb6741e12733f7d5f9731","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"e03da55d8ff5e481ec1d9757a63b039112b920fd","isMergeCommit":false,"messageTitle":"Fix Routing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"shishirbychapur":{"java":635,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":7}},"authorContributionVariance":{"shishirbychapur":22949.361},"authorDisplayNameMap":{"shishirbychapur":"CS2103T-F10-2 SHIS..NKAR"}} +{"authorDailyContributionsMap":{"shishirbychapur":[{"date":"2023-08-20","commitResults":[{"hash":"ea6536ef35c17abe2b5af2b2cc14ea0682e5e421","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":6}}},{"hash":"edfdabf725e35e5810591b05f348ce1aa8d35134","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":11}}},{"hash":"2510c57fae75d394e967b8e4af5182b985dc01f3","isMergeCommit":false,"messageTitle":"Add/List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":4}}}]},{"date":"2023-08-21","commitResults":[{"hash":"7872e1dc2339c86d88abe6c222c2062dde1eb093","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":4}}}]},{"date":"2023-08-22","commitResults":[{"hash":"da0057efd58a0d9832f6cf67dfe370d6a85ef59d","isMergeCommit":false,"messageTitle":"ToDo, Event, Deadline","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":122,"deletions":16}}},{"hash":"5aa47031969160b0942025990de843021d8d6c15","isMergeCommit":false,"messageTitle":"Setup Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":9,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bb80dc2722a52e326b9d35112c58599580fa54a8","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":153}}},{"hash":"c90660e6631be95a44f759ec2c5b35509e400ce7","isMergeCommit":false,"messageTitle":"Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}},{"hash":"d8252f80dcb00e95abc64fec0ea065fc7fdcd393","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"b5d3b2ec95c34bbb2141b386258b13abf400e5ed","isMergeCommit":false,"messageTitle":"Add File Compatibility","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":186,"deletions":1}}},{"hash":"73aa0eb2fb6025b0ac5f7ddb5f059e9568ed31d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"c8afeabe1f56015918ffcb03b9cc8593ccc4f53c","isMergeCommit":false,"messageTitle":"Add Date/Time Functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":51,"deletions":22}}},{"hash":"4bbb47bf88c3f9ec319bb6741e12733f7d5f9731","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"e03da55d8ff5e481ec1d9757a63b039112b920fd","isMergeCommit":false,"messageTitle":"Fix Routing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}}]},{"date":"2023-08-28","commitResults":[{"hash":"959643a1a0e3bab023c5b8bb065b32cd67660f3c","isMergeCommit":false,"messageTitle":"Improve OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":6},"java":{"insertions":438,"deletions":271}}},{"hash":"0d36b5727c6f799d13a07899232d14bd50dc9771","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-More-OOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"shishirbychapur":{"java":802,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"shishirbychapur":52100.99},"authorDisplayNameMap":{"shishirbychapur":"CS2103T-F10-2 SHIS..NKAR"}} diff --git a/summary.json b/summary.json index d65a1f80..bb04b659 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"324a0cbbff","reportGeneratedTime":"Mon Aug 28 00:47:25 2023 UTC+08:00","reportGenerationTime":" 1 minute(s) 37.33 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/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/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/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/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/ceilingFan456/ip.git","repoName":"ip","organization":"ceilingFan456","domainName":"github"},"branch":"master","displayName":"ceilingFan456/ip[master]","outputFolderName":"ceilingFan456_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_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/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[{"repoName":"Propene-Dan/ip[master]","errorMessage":"Failed to clone from https://github.com/Propene-Dan/ip.git"},{"repoName":"Cloud7050/ip[master]","errorMessage":"Failed to clone from https://github.com/Cloud7050/ip.git"},{"repoName":"papataco14/ip[master]","errorMessage":"Failed to clone from https://github.com/papataco14/ip.git"},{"repoName":"felibunnyy/ip[master]","errorMessage":"Failed to clone from https://github.com/felibunnyy/ip.git"},{"repoName":"starrylight99/ip[master]","errorMessage":"Failed to clone from https://github.com/starrylight99/ip.git"}],"sinceDate":"2023-08-18","untilDate":"2023-08-28","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":"324a0cbbff","reportGeneratedTime":"Mon Aug 28 09:13:57 2023 UTC+08:00","reportGenerationTime":" 1 minute(s) 25.59 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/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/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/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/jamz903/ip.git","repoName":"ip","organization":"jamz903","domainName":"github"},"branch":"master","displayName":"jamz903/ip[master]","outputFolderName":"jamz903_ip_master"},{"location":{"location":"https://github.com/Fallman2/ip.git","repoName":"ip","organization":"Fallman2","domainName":"github"},"branch":"master","displayName":"Fallman2/ip[master]","outputFolderName":"Fallman2_ip_master"},{"location":{"location":"https://github.com/jacobcuison/ip.git","repoName":"ip","organization":"jacobcuison","domainName":"github"},"branch":"master","displayName":"jacobcuison/ip[master]","outputFolderName":"jacobcuison_ip_master"},{"location":{"location":"https://github.com/kenvynKwek/ip.git","repoName":"ip","organization":"kenvynKwek","domainName":"github"},"branch":"master","displayName":"kenvynKwek/ip[master]","outputFolderName":"kenvynKwek_ip_master"},{"location":{"location":"https://github.com/kokrui/ip.git","repoName":"ip","organization":"kokrui","domainName":"github"},"branch":"master","displayName":"kokrui/ip[master]","outputFolderName":"kokrui_ip_master"},{"location":{"location":"https://github.com/ncmathan/ip.git","repoName":"ip","organization":"ncmathan","domainName":"github"},"branch":"master","displayName":"ncmathan/ip[master]","outputFolderName":"ncmathan_ip_master"},{"location":{"location":"https://github.com/xCOLOURx/ip.git","repoName":"ip","organization":"xCOLOURx","domainName":"github"},"branch":"master","displayName":"xCOLOURx/ip[master]","outputFolderName":"xCOLOURx_ip_master"},{"location":{"location":"https://github.com/zhyuhan/ip.git","repoName":"ip","organization":"zhyuhan","domainName":"github"},"branch":"master","displayName":"zhyuhan/ip[master]","outputFolderName":"zhyuhan_ip_master"},{"location":{"location":"https://github.com/ceilingFan456/ip.git","repoName":"ip","organization":"ceilingFan456","domainName":"github"},"branch":"master","displayName":"ceilingFan456/ip[master]","outputFolderName":"ceilingFan456_ip_master"},{"location":{"location":"https://github.com/chuababyy/ip.git","repoName":"ip","organization":"chuababyy","domainName":"github"},"branch":"master","displayName":"chuababyy/ip[master]","outputFolderName":"chuababyy_ip_master"},{"location":{"location":"https://github.com/rocketninja7/ip.git","repoName":"ip","organization":"rocketninja7","domainName":"github"},"branch":"master","displayName":"rocketninja7/ip[master]","outputFolderName":"rocketninja7_ip_master"},{"location":{"location":"https://github.com/marquestye/ip.git","repoName":"ip","organization":"marquestye","domainName":"github"},"branch":"master","displayName":"marquestye/ip[master]","outputFolderName":"marquestye_ip_master"},{"location":{"location":"https://github.com/ruiyangzh/ip.git","repoName":"ip","organization":"ruiyangzh","domainName":"github"},"branch":"master","displayName":"ruiyangzh/ip[master]","outputFolderName":"ruiyangzh_ip_master"},{"location":{"location":"https://github.com/derekjxtan/ip.git","repoName":"ip","organization":"derekjxtan","domainName":"github"},"branch":"master","displayName":"derekjxtan/ip[master]","outputFolderName":"derekjxtan_ip_master"},{"location":{"location":"https://github.com/mounilsankar/ip.git","repoName":"ip","organization":"mounilsankar","domainName":"github"},"branch":"master","displayName":"mounilsankar/ip[master]","outputFolderName":"mounilsankar_ip_master"},{"location":{"location":"https://github.com/wj331/ip.git","repoName":"ip","organization":"wj331","domainName":"github"},"branch":"master","displayName":"wj331/ip[master]","outputFolderName":"wj331_ip_master"},{"location":{"location":"https://github.com/JasonLCY-Temp/ip.git","repoName":"ip","organization":"JasonLCY-Temp","domainName":"github"},"branch":"master","displayName":"JasonLCY-Temp/ip[master]","outputFolderName":"JasonLCY-Temp_ip_master"},{"location":{"location":"https://github.com/lawruixi/ip.git","repoName":"ip","organization":"lawruixi","domainName":"github"},"branch":"master","displayName":"lawruixi/ip[master]","outputFolderName":"lawruixi_ip_master"},{"location":{"location":"https://github.com/wxwern/ip.git","repoName":"ip","organization":"wxwern","domainName":"github"},"branch":"master","displayName":"wxwern/ip[master]","outputFolderName":"wxwern_ip_master"},{"location":{"location":"https://github.com/zekone/ip.git","repoName":"ip","organization":"zekone","domainName":"github"},"branch":"master","displayName":"zekone/ip[master]","outputFolderName":"zekone_ip_master"},{"location":{"location":"https://github.com/wamps-jp/ip.git","repoName":"ip","organization":"wamps-jp","domainName":"github"},"branch":"master","displayName":"wamps-jp/ip[master]","outputFolderName":"wamps-jp_ip_master"},{"location":{"location":"https://github.com/saltedfishxx/ip.git","repoName":"ip","organization":"saltedfishxx","domainName":"github"},"branch":"master","displayName":"saltedfishxx/ip[master]","outputFolderName":"saltedfishxx_ip_master"},{"location":{"location":"https://github.com/winson8222/ip.git","repoName":"ip","organization":"winson8222","domainName":"github"},"branch":"master","displayName":"winson8222/ip[master]","outputFolderName":"winson8222_ip_master"},{"location":{"location":"https://github.com/brandon-nam/ip.git","repoName":"ip","organization":"brandon-nam","domainName":"github"},"branch":"master","displayName":"brandon-nam/ip[master]","outputFolderName":"brandon-nam_ip_master"},{"location":{"location":"https://github.com/p-xp/ip.git","repoName":"ip","organization":"p-xp","domainName":"github"},"branch":"master","displayName":"p-xp/ip[master]","outputFolderName":"p-xp_ip_master"},{"location":{"location":"https://github.com/WeeMingQing/ip.git","repoName":"ip","organization":"WeeMingQing","domainName":"github"},"branch":"master","displayName":"WeeMingQing/ip[master]","outputFolderName":"WeeMingQing_ip_master"},{"location":{"location":"https://github.com/ScarletBlanks/ip.git","repoName":"ip","organization":"ScarletBlanks","domainName":"github"},"branch":"master","displayName":"ScarletBlanks/ip[master]","outputFolderName":"ScarletBlanks_ip_master"},{"location":{"location":"https://github.com/seraphimstreets/ip.git","repoName":"ip","organization":"seraphimstreets","domainName":"github"},"branch":"master","displayName":"seraphimstreets/ip[master]","outputFolderName":"seraphimstreets_ip_master"},{"location":{"location":"https://github.com/devanshubisht/ip.git","repoName":"ip","organization":"devanshubisht","domainName":"github"},"branch":"master","displayName":"devanshubisht/ip[master]","outputFolderName":"devanshubisht_ip_master"},{"location":{"location":"https://github.com/Zjinnnn/ip.git","repoName":"ip","organization":"Zjinnnn","domainName":"github"},"branch":"master","displayName":"Zjinnnn/ip[master]","outputFolderName":"Zjinnnn_ip_master"},{"location":{"location":"https://github.com/brendanneojw/ip.git","repoName":"ip","organization":"brendanneojw","domainName":"github"},"branch":"master","displayName":"brendanneojw/ip[master]","outputFolderName":"brendanneojw_ip_master"},{"location":{"location":"https://github.com/aexolate/ip.git","repoName":"ip","organization":"aexolate","domainName":"github"},"branch":"master","displayName":"aexolate/ip[master]","outputFolderName":"aexolate_ip_master"},{"location":{"location":"https://github.com/techjay-c/ip.git","repoName":"ip","organization":"techjay-c","domainName":"github"},"branch":"master","displayName":"techjay-c/ip[master]","outputFolderName":"techjay-c_ip_master"},{"location":{"location":"https://github.com/SynapseProgramming/ip.git","repoName":"ip","organization":"SynapseProgramming","domainName":"github"},"branch":"master","displayName":"SynapseProgramming/ip[master]","outputFolderName":"SynapseProgramming_ip_master"},{"location":{"location":"https://github.com/TyrusLye/ip.git","repoName":"ip","organization":"TyrusLye","domainName":"github"},"branch":"master","displayName":"TyrusLye/ip[master]","outputFolderName":"TyrusLye_ip_master"},{"location":{"location":"https://github.com/RB9823/ip.git","repoName":"ip","organization":"RB9823","domainName":"github"},"branch":"master","displayName":"RB9823/ip[master]","outputFolderName":"RB9823_ip_master"},{"location":{"location":"https://github.com/jean-cq/ip.git","repoName":"ip","organization":"jean-cq","domainName":"github"},"branch":"master","displayName":"jean-cq/ip[master]","outputFolderName":"jean-cq_ip_master"},{"location":{"location":"https://github.com/Bearypop/ip.git","repoName":"ip","organization":"Bearypop","domainName":"github"},"branch":"master","displayName":"Bearypop/ip[master]","outputFolderName":"Bearypop_ip_master"},{"location":{"location":"https://github.com/andytoh1/ip.git","repoName":"ip","organization":"andytoh1","domainName":"github"},"branch":"master","displayName":"andytoh1/ip[master]","outputFolderName":"andytoh1_ip_master"},{"location":{"location":"https://github.com/siqirua/ip.git","repoName":"ip","organization":"siqirua","domainName":"github"},"branch":"master","displayName":"siqirua/ip[master]","outputFolderName":"siqirua_ip_master"},{"location":{"location":"https://github.com/amosting/ip.git","repoName":"ip","organization":"amosting","domainName":"github"},"branch":"master","displayName":"amosting/ip[master]","outputFolderName":"amosting_ip_master"},{"location":{"location":"https://github.com/JizhuoChen/ip.git","repoName":"ip","organization":"JizhuoChen","domainName":"github"},"branch":"master","displayName":"JizhuoChen/ip[master]","outputFolderName":"JizhuoChen_ip_master"},{"location":{"location":"https://github.com/Tang-Moyan/ip.git","repoName":"ip","organization":"Tang-Moyan","domainName":"github"},"branch":"master","displayName":"Tang-Moyan/ip[master]","outputFolderName":"Tang-Moyan_ip_master"},{"location":{"location":"https://github.com/aliciamichellew/ip.git","repoName":"ip","organization":"aliciamichellew","domainName":"github"},"branch":"master","displayName":"aliciamichellew/ip[master]","outputFolderName":"aliciamichellew_ip_master"},{"location":{"location":"https://github.com/KamiliArsyad/ip.git","repoName":"ip","organization":"KamiliArsyad","domainName":"github"},"branch":"master","displayName":"KamiliArsyad/ip[master]","outputFolderName":"KamiliArsyad_ip_master"},{"location":{"location":"https://github.com/dishenggg/ip.git","repoName":"ip","organization":"dishenggg","domainName":"github"},"branch":"master","displayName":"dishenggg/ip[master]","outputFolderName":"dishenggg_ip_master"},{"location":{"location":"https://github.com/Nixx162/ip.git","repoName":"ip","organization":"Nixx162","domainName":"github"},"branch":"master","displayName":"Nixx162/ip[master]","outputFolderName":"Nixx162_ip_master"},{"location":{"location":"https://github.com/Leb14/ip.git","repoName":"ip","organization":"Leb14","domainName":"github"},"branch":"master","displayName":"Leb14/ip[master]","outputFolderName":"Leb14_ip_master"},{"location":{"location":"https://github.com/Heran9/ip.git","repoName":"ip","organization":"Heran9","domainName":"github"},"branch":"master","displayName":"Heran9/ip[master]","outputFolderName":"Heran9_ip_master"},{"location":{"location":"https://github.com/FerdiHS/ip.git","repoName":"ip","organization":"FerdiHS","domainName":"github"},"branch":"master","displayName":"FerdiHS/ip[master]","outputFolderName":"FerdiHS_ip_master"},{"location":{"location":"https://github.com/StevenLiudw/ip.git","repoName":"ip","organization":"StevenLiudw","domainName":"github"},"branch":"master","displayName":"StevenLiudw/ip[master]","outputFolderName":"StevenLiudw_ip_master"},{"location":{"location":"https://github.com/InfiBeyond/ip.git","repoName":"ip","organization":"InfiBeyond","domainName":"github"},"branch":"master","displayName":"InfiBeyond/ip[master]","outputFolderName":"InfiBeyond_ip_master"},{"location":{"location":"https://github.com/s0ngyang/ip.git","repoName":"ip","organization":"s0ngyang","domainName":"github"},"branch":"master","displayName":"s0ngyang/ip[master]","outputFolderName":"s0ngyang_ip_master"},{"location":{"location":"https://github.com/ivyy-poison/ip.git","repoName":"ip","organization":"ivyy-poison","domainName":"github"},"branch":"master","displayName":"ivyy-poison/ip[master]","outputFolderName":"ivyy-poison_ip_master"},{"location":{"location":"https://github.com/yytan25/ip.git","repoName":"ip","organization":"yytan25","domainName":"github"},"branch":"master","displayName":"yytan25/ip[master]","outputFolderName":"yytan25_ip_master"},{"location":{"location":"https://github.com/tjch-o/ip.git","repoName":"ip","organization":"tjch-o","domainName":"github"},"branch":"master","displayName":"tjch-o/ip[master]","outputFolderName":"tjch-o_ip_master"},{"location":{"location":"https://github.com/jedkohjk/ip.git","repoName":"ip","organization":"jedkohjk","domainName":"github"},"branch":"master","displayName":"jedkohjk/ip[master]","outputFolderName":"jedkohjk_ip_master"},{"location":{"location":"https://github.com/raynertjx/ip.git","repoName":"ip","organization":"raynertjx","domainName":"github"},"branch":"master","displayName":"raynertjx/ip[master]","outputFolderName":"raynertjx_ip_master"},{"location":{"location":"https://github.com/cmHuang777/ip.git","repoName":"ip","organization":"cmHuang777","domainName":"github"},"branch":"master","displayName":"cmHuang777/ip[master]","outputFolderName":"cmHuang777_ip_master"},{"location":{"location":"https://github.com/wui-hong/ip.git","repoName":"ip","organization":"wui-hong","domainName":"github"},"branch":"master","displayName":"wui-hong/ip[master]","outputFolderName":"wui-hong_ip_master"},{"location":{"location":"https://github.com/PohSayKeong/ip.git","repoName":"ip","organization":"PohSayKeong","domainName":"github"},"branch":"master","displayName":"PohSayKeong/ip[master]","outputFolderName":"PohSayKeong_ip_master"},{"location":{"location":"https://github.com/lsyurea/ip.git","repoName":"ip","organization":"lsyurea","domainName":"github"},"branch":"master","displayName":"lsyurea/ip[master]","outputFolderName":"lsyurea_ip_master"},{"location":{"location":"https://github.com/ong-wei-hong/ip.git","repoName":"ip","organization":"ong-wei-hong","domainName":"github"},"branch":"master","displayName":"ong-wei-hong/ip[master]","outputFolderName":"ong-wei-hong_ip_master"},{"location":{"location":"https://github.com/asdfghjkxd/ip.git","repoName":"ip","organization":"asdfghjkxd","domainName":"github"},"branch":"master","displayName":"asdfghjkxd/ip[master]","outputFolderName":"asdfghjkxd_ip_master"},{"location":{"location":"https://github.com/GSgiansen/ip.git","repoName":"ip","organization":"GSgiansen","domainName":"github"},"branch":"master","displayName":"GSgiansen/ip[master]","outputFolderName":"GSgiansen_ip_master"},{"location":{"location":"https://github.com/syamfarh/ip.git","repoName":"ip","organization":"syamfarh","domainName":"github"},"branch":"master","displayName":"syamfarh/ip[master]","outputFolderName":"syamfarh_ip_master"},{"location":{"location":"https://github.com/PetrichorPrecipice/ip.git","repoName":"ip","organization":"PetrichorPrecipice","domainName":"github"},"branch":"master","displayName":"PetrichorPrecipice/ip[master]","outputFolderName":"PetrichorPrecipice_ip_master"},{"location":{"location":"https://github.com/ngeeyonglim/ip.git","repoName":"ip","organization":"ngeeyonglim","domainName":"github"},"branch":"master","displayName":"ngeeyonglim/ip[master]","outputFolderName":"ngeeyonglim_ip_master"},{"location":{"location":"https://github.com/ivanleekk/ip.git","repoName":"ip","organization":"ivanleekk","domainName":"github"},"branch":"master","displayName":"ivanleekk/ip[master]","outputFolderName":"ivanleekk_ip_master"},{"location":{"location":"https://github.com/ryanozx/ip.git","repoName":"ip","organization":"ryanozx","domainName":"github"},"branch":"master","displayName":"ryanozx/ip[master]","outputFolderName":"ryanozx_ip_master"},{"location":{"location":"https://github.com/Jweewee/ip.git","repoName":"ip","organization":"Jweewee","domainName":"github"},"branch":"master","displayName":"Jweewee/ip[master]","outputFolderName":"Jweewee_ip_master"},{"location":{"location":"https://github.com/supermii2/ip.git","repoName":"ip","organization":"supermii2","domainName":"github"},"branch":"master","displayName":"supermii2/ip[master]","outputFolderName":"supermii2_ip_master"},{"location":{"location":"https://github.com/bkjwjason/ip.git","repoName":"ip","organization":"bkjwjason","domainName":"github"},"branch":"master","displayName":"bkjwjason/ip[master]","outputFolderName":"bkjwjason_ip_master"},{"location":{"location":"https://github.com/Sasmik23/ip.git","repoName":"ip","organization":"Sasmik23","domainName":"github"},"branch":"master","displayName":"Sasmik23/ip[master]","outputFolderName":"Sasmik23_ip_master"},{"location":{"location":"https://github.com/nathanielcalimag/ip.git","repoName":"ip","organization":"nathanielcalimag","domainName":"github"},"branch":"master","displayName":"nathanielcalimag/ip[master]","outputFolderName":"nathanielcalimag_ip_master"},{"location":{"location":"https://github.com/AlagappanRa/ip.git","repoName":"ip","organization":"AlagappanRa","domainName":"github"},"branch":"master","displayName":"AlagappanRa/ip[master]","outputFolderName":"AlagappanRa_ip_master"},{"location":{"location":"https://github.com/McNaBry/ip.git","repoName":"ip","organization":"McNaBry","domainName":"github"},"branch":"master","displayName":"McNaBry/ip[master]","outputFolderName":"McNaBry_ip_master"},{"location":{"location":"https://github.com/phiphi-tan/ip.git","repoName":"ip","organization":"phiphi-tan","domainName":"github"},"branch":"master","displayName":"phiphi-tan/ip[master]","outputFolderName":"phiphi-tan_ip_master"},{"location":{"location":"https://github.com/LicongHuang/ip.git","repoName":"ip","organization":"LicongHuang","domainName":"github"},"branch":"master","displayName":"LicongHuang/ip[master]","outputFolderName":"LicongHuang_ip_master"},{"location":{"location":"https://github.com/tanshiyu1999/ip.git","repoName":"ip","organization":"tanshiyu1999","domainName":"github"},"branch":"master","displayName":"tanshiyu1999/ip[master]","outputFolderName":"tanshiyu1999_ip_master"},{"location":{"location":"https://github.com/raydenlim/ip.git","repoName":"ip","organization":"raydenlim","domainName":"github"},"branch":"master","displayName":"raydenlim/ip[master]","outputFolderName":"raydenlim_ip_master"},{"location":{"location":"https://github.com/jianyangg/ip.git","repoName":"ip","organization":"jianyangg","domainName":"github"},"branch":"master","displayName":"jianyangg/ip[master]","outputFolderName":"jianyangg_ip_master"},{"location":{"location":"https://github.com/rionshocker/ip.git","repoName":"ip","organization":"rionshocker","domainName":"github"},"branch":"master","displayName":"rionshocker/ip[master]","outputFolderName":"rionshocker_ip_master"},{"location":{"location":"https://github.com/conradsoon/ip.git","repoName":"ip","organization":"conradsoon","domainName":"github"},"branch":"master","displayName":"conradsoon/ip[master]","outputFolderName":"conradsoon_ip_master"},{"location":{"location":"https://github.com/Jonyxzx/ip.git","repoName":"ip","organization":"Jonyxzx","domainName":"github"},"branch":"master","displayName":"Jonyxzx/ip[master]","outputFolderName":"Jonyxzx_ip_master"},{"location":{"location":"https://github.com/euchangxian/ip.git","repoName":"ip","organization":"euchangxian","domainName":"github"},"branch":"master","displayName":"euchangxian/ip[master]","outputFolderName":"euchangxian_ip_master"},{"location":{"location":"https://github.com/teoks0199/ip.git","repoName":"ip","organization":"teoks0199","domainName":"github"},"branch":"master","displayName":"teoks0199/ip[master]","outputFolderName":"teoks0199_ip_master"},{"location":{"location":"https://github.com/HollaG/ip.git","repoName":"ip","organization":"HollaG","domainName":"github"},"branch":"master","displayName":"HollaG/ip[master]","outputFolderName":"HollaG_ip_master"},{"location":{"location":"https://github.com/leezhengjing/ip.git","repoName":"ip","organization":"leezhengjing","domainName":"github"},"branch":"master","displayName":"leezhengjing/ip[master]","outputFolderName":"leezhengjing_ip_master"},{"location":{"location":"https://github.com/timleow/ip.git","repoName":"ip","organization":"timleow","domainName":"github"},"branch":"master","displayName":"timleow/ip[master]","outputFolderName":"timleow_ip_master"},{"location":{"location":"https://github.com/jacksonyuan256/ip.git","repoName":"ip","organization":"jacksonyuan256","domainName":"github"},"branch":"master","displayName":"jacksonyuan256/ip[master]","outputFolderName":"jacksonyuan256_ip_master"},{"location":{"location":"https://github.com/victorlaiyeeteng/ip.git","repoName":"ip","organization":"victorlaiyeeteng","domainName":"github"},"branch":"master","displayName":"victorlaiyeeteng/ip[master]","outputFolderName":"victorlaiyeeteng_ip_master"},{"location":{"location":"https://github.com/prawnzyy/ip.git","repoName":"ip","organization":"prawnzyy","domainName":"github"},"branch":"master","displayName":"prawnzyy/ip[master]","outputFolderName":"prawnzyy_ip_master"},{"location":{"location":"https://github.com/ryanongwx/ip.git","repoName":"ip","organization":"ryanongwx","domainName":"github"},"branch":"master","displayName":"ryanongwx/ip[master]","outputFolderName":"ryanongwx_ip_master"},{"location":{"location":"https://github.com/tohpinren/ip.git","repoName":"ip","organization":"tohpinren","domainName":"github"},"branch":"master","displayName":"tohpinren/ip[master]","outputFolderName":"tohpinren_ip_master"},{"location":{"location":"https://github.com/DeltonCheng/ip.git","repoName":"ip","organization":"DeltonCheng","domainName":"github"},"branch":"master","displayName":"DeltonCheng/ip[master]","outputFolderName":"DeltonCheng_ip_master"},{"location":{"location":"https://github.com/leontan2/ip.git","repoName":"ip","organization":"leontan2","domainName":"github"},"branch":"master","displayName":"leontan2/ip[master]","outputFolderName":"leontan2_ip_master"},{"location":{"location":"https://github.com/alvinlim277/ip.git","repoName":"ip","organization":"alvinlim277","domainName":"github"},"branch":"master","displayName":"alvinlim277/ip[master]","outputFolderName":"alvinlim277_ip_master"},{"location":{"location":"https://github.com/lshaoqin/ip.git","repoName":"ip","organization":"lshaoqin","domainName":"github"},"branch":"master","displayName":"lshaoqin/ip[master]","outputFolderName":"lshaoqin_ip_master"},{"location":{"location":"https://github.com/ChongWeiJie29/ip.git","repoName":"ip","organization":"ChongWeiJie29","domainName":"github"},"branch":"master","displayName":"ChongWeiJie29/ip[master]","outputFolderName":"ChongWeiJie29_ip_master"},{"location":{"location":"https://github.com/zhonghan721/ip.git","repoName":"ip","organization":"zhonghan721","domainName":"github"},"branch":"master","displayName":"zhonghan721/ip[master]","outputFolderName":"zhonghan721_ip_master"},{"location":{"location":"https://github.com/teozhengyang/ip.git","repoName":"ip","organization":"teozhengyang","domainName":"github"},"branch":"master","displayName":"teozhengyang/ip[master]","outputFolderName":"teozhengyang_ip_master"},{"location":{"location":"https://github.com/garylow2001/ip.git","repoName":"ip","organization":"garylow2001","domainName":"github"},"branch":"master","displayName":"garylow2001/ip[master]","outputFolderName":"garylow2001_ip_master"},{"location":{"location":"https://github.com/Cleon2/ip.git","repoName":"ip","organization":"Cleon2","domainName":"github"},"branch":"master","displayName":"Cleon2/ip[master]","outputFolderName":"Cleon2_ip_master"},{"location":{"location":"https://github.com/limzhenwy/ip.git","repoName":"ip","organization":"limzhenwy","domainName":"github"},"branch":"master","displayName":"limzhenwy/ip[master]","outputFolderName":"limzhenwy_ip_master"},{"location":{"location":"https://github.com/ItsTYtan/ip.git","repoName":"ip","organization":"ItsTYtan","domainName":"github"},"branch":"master","displayName":"ItsTYtan/ip[master]","outputFolderName":"ItsTYtan_ip_master"},{"location":{"location":"https://github.com/owenyeo/ip.git","repoName":"ip","organization":"owenyeo","domainName":"github"},"branch":"master","displayName":"owenyeo/ip[master]","outputFolderName":"owenyeo_ip_master"},{"location":{"location":"https://github.com/jonasongg/ip.git","repoName":"ip","organization":"jonasongg","domainName":"github"},"branch":"master","displayName":"jonasongg/ip[master]","outputFolderName":"jonasongg_ip_master"},{"location":{"location":"https://github.com/Ruizhi2001/ip.git","repoName":"ip","organization":"Ruizhi2001","domainName":"github"},"branch":"master","displayName":"Ruizhi2001/ip[master]","outputFolderName":"Ruizhi2001_ip_master"},{"location":{"location":"https://github.com/Dioclei/ip.git","repoName":"ip","organization":"Dioclei","domainName":"github"},"branch":"master","displayName":"Dioclei/ip[master]","outputFolderName":"Dioclei_ip_master"},{"location":{"location":"https://github.com/bobscodedump/ip.git","repoName":"ip","organization":"bobscodedump","domainName":"github"},"branch":"master","displayName":"bobscodedump/ip[master]","outputFolderName":"bobscodedump_ip_master"},{"location":{"location":"https://github.com/andrefoo/ip.git","repoName":"ip","organization":"andrefoo","domainName":"github"},"branch":"master","displayName":"andrefoo/ip[master]","outputFolderName":"andrefoo_ip_master"},{"location":{"location":"https://github.com/Bombbird2001/ip.git","repoName":"ip","organization":"Bombbird2001","domainName":"github"},"branch":"master","displayName":"Bombbird2001/ip[master]","outputFolderName":"Bombbird2001_ip_master"},{"location":{"location":"https://github.com/chewjh1234/ip.git","repoName":"ip","organization":"chewjh1234","domainName":"github"},"branch":"master","displayName":"chewjh1234/ip[master]","outputFolderName":"chewjh1234_ip_master"},{"location":{"location":"https://github.com/dloh2236/ip.git","repoName":"ip","organization":"dloh2236","domainName":"github"},"branch":"master","displayName":"dloh2236/ip[master]","outputFolderName":"dloh2236_ip_master"},{"location":{"location":"https://github.com/chew01/ip.git","repoName":"ip","organization":"chew01","domainName":"github"},"branch":"master","displayName":"chew01/ip[master]","outputFolderName":"chew01_ip_master"},{"location":{"location":"https://github.com/trgao/ip.git","repoName":"ip","organization":"trgao","domainName":"github"},"branch":"master","displayName":"trgao/ip[master]","outputFolderName":"trgao_ip_master"},{"location":{"location":"https://github.com/richiehx/ip.git","repoName":"ip","organization":"richiehx","domainName":"github"},"branch":"master","displayName":"richiehx/ip[master]","outputFolderName":"richiehx_ip_master"},{"location":{"location":"https://github.com/LoMaply/ip.git","repoName":"ip","organization":"LoMaply","domainName":"github"},"branch":"master","displayName":"LoMaply/ip[master]","outputFolderName":"LoMaply_ip_master"},{"location":{"location":"https://github.com/Originalidk/ip.git","repoName":"ip","organization":"Originalidk","domainName":"github"},"branch":"master","displayName":"Originalidk/ip[master]","outputFolderName":"Originalidk_ip_master"},{"location":{"location":"https://github.com/kiatkat/ip.git","repoName":"ip","organization":"kiatkat","domainName":"github"},"branch":"master","displayName":"kiatkat/ip[master]","outputFolderName":"kiatkat_ip_master"},{"location":{"location":"https://github.com/juliusgambe/ip.git","repoName":"ip","organization":"juliusgambe","domainName":"github"},"branch":"master","displayName":"juliusgambe/ip[master]","outputFolderName":"juliusgambe_ip_master"},{"location":{"location":"https://github.com/jiakai-17/ip.git","repoName":"ip","organization":"jiakai-17","domainName":"github"},"branch":"master","displayName":"jiakai-17/ip[master]","outputFolderName":"jiakai-17_ip_master"},{"location":{"location":"https://github.com/nikele2001/ip.git","repoName":"ip","organization":"nikele2001","domainName":"github"},"branch":"master","displayName":"nikele2001/ip[master]","outputFolderName":"nikele2001_ip_master"},{"location":{"location":"https://github.com/jylow/ip.git","repoName":"ip","organization":"jylow","domainName":"github"},"branch":"master","displayName":"jylow/ip[master]","outputFolderName":"jylow_ip_master"},{"location":{"location":"https://github.com/jx124/ip.git","repoName":"ip","organization":"jx124","domainName":"github"},"branch":"master","displayName":"jx124/ip[master]","outputFolderName":"jx124_ip_master"},{"location":{"location":"https://github.com/Kb-Tay/ip.git","repoName":"ip","organization":"Kb-Tay","domainName":"github"},"branch":"master","displayName":"Kb-Tay/ip[master]","outputFolderName":"Kb-Tay_ip_master"},{"location":{"location":"https://github.com/jinyuan0425/ip.git","repoName":"ip","organization":"jinyuan0425","domainName":"github"},"branch":"master","displayName":"jinyuan0425/ip[master]","outputFolderName":"jinyuan0425_ip_master"},{"location":{"location":"https://github.com/darrentfy/ip.git","repoName":"ip","organization":"darrentfy","domainName":"github"},"branch":"master","displayName":"darrentfy/ip[master]","outputFolderName":"darrentfy_ip_master"},{"location":{"location":"https://github.com/HEEaZ/ip.git","repoName":"ip","organization":"HEEaZ","domainName":"github"},"branch":"master","displayName":"HEEaZ/ip[master]","outputFolderName":"HEEaZ_ip_master"},{"location":{"location":"https://github.com/ji-just-ji/ip.git","repoName":"ip","organization":"ji-just-ji","domainName":"github"},"branch":"master","displayName":"ji-just-ji/ip[master]","outputFolderName":"ji-just-ji_ip_master"},{"location":{"location":"https://github.com/simbayippy/ip.git","repoName":"ip","organization":"simbayippy","domainName":"github"},"branch":"master","displayName":"simbayippy/ip[master]","outputFolderName":"simbayippy_ip_master"},{"location":{"location":"https://github.com/teozern1/ip.git","repoName":"ip","organization":"teozern1","domainName":"github"},"branch":"master","displayName":"teozern1/ip[master]","outputFolderName":"teozern1_ip_master"},{"location":{"location":"https://github.com/brein62/ip.git","repoName":"ip","organization":"brein62","domainName":"github"},"branch":"master","displayName":"brein62/ip[master]","outputFolderName":"brein62_ip_master"},{"location":{"location":"https://github.com/awhb/ip.git","repoName":"ip","organization":"awhb","domainName":"github"},"branch":"master","displayName":"awhb/ip[master]","outputFolderName":"awhb_ip_master"},{"location":{"location":"https://github.com/Mahidharah/ip.git","repoName":"ip","organization":"Mahidharah","domainName":"github"},"branch":"master","displayName":"Mahidharah/ip[master]","outputFolderName":"Mahidharah_ip_master"},{"location":{"location":"https://github.com/timetraveller-123/ip.git","repoName":"ip","organization":"timetraveller-123","domainName":"github"},"branch":"master","displayName":"timetraveller-123/ip[master]","outputFolderName":"timetraveller-123_ip_master"},{"location":{"location":"https://github.com/ElginTZM/ip.git","repoName":"ip","organization":"ElginTZM","domainName":"github"},"branch":"master","displayName":"ElginTZM/ip[master]","outputFolderName":"ElginTZM_ip_master"},{"location":{"location":"https://github.com/ryamgoh/ip.git","repoName":"ip","organization":"ryamgoh","domainName":"github"},"branch":"master","displayName":"ryamgoh/ip[master]","outputFolderName":"ryamgoh_ip_master"},{"location":{"location":"https://github.com/Blizzeracz/ip.git","repoName":"ip","organization":"Blizzeracz","domainName":"github"},"branch":"master","displayName":"Blizzeracz/ip[master]","outputFolderName":"Blizzeracz_ip_master"},{"location":{"location":"https://github.com/kiwibang/ip.git","repoName":"ip","organization":"kiwibang","domainName":"github"},"branch":"master","displayName":"kiwibang/ip[master]","outputFolderName":"kiwibang_ip_master"},{"location":{"location":"https://github.com/redtailedfox/ip.git","repoName":"ip","organization":"redtailedfox","domainName":"github"},"branch":"master","displayName":"redtailedfox/ip[master]","outputFolderName":"redtailedfox_ip_master"},{"location":{"location":"https://github.com/lamchenghou/ip.git","repoName":"ip","organization":"lamchenghou","domainName":"github"},"branch":"master","displayName":"lamchenghou/ip[master]","outputFolderName":"lamchenghou_ip_master"},{"location":{"location":"https://github.com/gongg21/ip.git","repoName":"ip","organization":"gongg21","domainName":"github"},"branch":"master","displayName":"gongg21/ip[master]","outputFolderName":"gongg21_ip_master"},{"location":{"location":"https://github.com/CJ-Lee01/ip.git","repoName":"ip","organization":"CJ-Lee01","domainName":"github"},"branch":"master","displayName":"CJ-Lee01/ip[master]","outputFolderName":"CJ-Lee01_ip_master"},{"location":{"location":"https://github.com/Sheeepen/ip.git","repoName":"ip","organization":"Sheeepen","domainName":"github"},"branch":"master","displayName":"Sheeepen/ip[master]","outputFolderName":"Sheeepen_ip_master"},{"location":{"location":"https://github.com/AaronJT1/ip.git","repoName":"ip","organization":"AaronJT1","domainName":"github"},"branch":"master","displayName":"AaronJT1/ip[master]","outputFolderName":"AaronJT1_ip_master"},{"location":{"location":"https://github.com/Respirayson/ip.git","repoName":"ip","organization":"Respirayson","domainName":"github"},"branch":"master","displayName":"Respirayson/ip[master]","outputFolderName":"Respirayson_ip_master"},{"location":{"location":"https://github.com/dickongwd/ip.git","repoName":"ip","organization":"dickongwd","domainName":"github"},"branch":"master","displayName":"dickongwd/ip[master]","outputFolderName":"dickongwd_ip_master"},{"location":{"location":"https://github.com/nicholascher/ip.git","repoName":"ip","organization":"nicholascher","domainName":"github"},"branch":"master","displayName":"nicholascher/ip[master]","outputFolderName":"nicholascher_ip_master"},{"location":{"location":"https://github.com/et-irl/ip.git","repoName":"ip","organization":"et-irl","domainName":"github"},"branch":"master","displayName":"et-irl/ip[master]","outputFolderName":"et-irl_ip_master"},{"location":{"location":"https://github.com/aslam341/ip.git","repoName":"ip","organization":"aslam341","domainName":"github"},"branch":"master","displayName":"aslam341/ip[master]","outputFolderName":"aslam341_ip_master"},{"location":{"location":"https://github.com/seantehds/ip.git","repoName":"ip","organization":"seantehds","domainName":"github"},"branch":"master","displayName":"seantehds/ip[master]","outputFolderName":"seantehds_ip_master"},{"location":{"location":"https://github.com/jianrong7/ip.git","repoName":"ip","organization":"jianrong7","domainName":"github"},"branch":"master","displayName":"jianrong7/ip[master]","outputFolderName":"jianrong7_ip_master"},{"location":{"location":"https://github.com/TeeRenJing/ip.git","repoName":"ip","organization":"TeeRenJing","domainName":"github"},"branch":"master","displayName":"TeeRenJing/ip[master]","outputFolderName":"TeeRenJing_ip_master"},{"location":{"location":"https://github.com/RoeReRe/ip.git","repoName":"ip","organization":"RoeReRe","domainName":"github"},"branch":"master","displayName":"RoeReRe/ip[master]","outputFolderName":"RoeReRe_ip_master"},{"location":{"location":"https://github.com/zsh-eng/ip.git","repoName":"ip","organization":"zsh-eng","domainName":"github"},"branch":"master","displayName":"zsh-eng/ip[master]","outputFolderName":"zsh-eng_ip_master"},{"location":{"location":"https://github.com/seanpzk/ip.git","repoName":"ip","organization":"seanpzk","domainName":"github"},"branch":"master","displayName":"seanpzk/ip[master]","outputFolderName":"seanpzk_ip_master"},{"location":{"location":"https://github.com/quzhetao01/ip.git","repoName":"ip","organization":"quzhetao01","domainName":"github"},"branch":"master","displayName":"quzhetao01/ip[master]","outputFolderName":"quzhetao01_ip_master"},{"location":{"location":"https://github.com/joel-foo/ip.git","repoName":"ip","organization":"joel-foo","domainName":"github"},"branch":"master","displayName":"joel-foo/ip[master]","outputFolderName":"joel-foo_ip_master"},{"location":{"location":"https://github.com/markgcera/ip.git","repoName":"ip","organization":"markgcera","domainName":"github"},"branch":"master","displayName":"markgcera/ip[master]","outputFolderName":"markgcera_ip_master"},{"location":{"location":"https://github.com/dylkaw/ip.git","repoName":"ip","organization":"dylkaw","domainName":"github"},"branch":"master","displayName":"dylkaw/ip[master]","outputFolderName":"dylkaw_ip_master"},{"location":{"location":"https://github.com/SelwynAng/ip.git","repoName":"ip","organization":"SelwynAng","domainName":"github"},"branch":"master","displayName":"SelwynAng/ip[master]","outputFolderName":"SelwynAng_ip_master"},{"location":{"location":"https://github.com/jinyang628/ip.git","repoName":"ip","organization":"jinyang628","domainName":"github"},"branch":"master","displayName":"jinyang628/ip[master]","outputFolderName":"jinyang628_ip_master"},{"location":{"location":"https://github.com/matochichap/ip.git","repoName":"ip","organization":"matochichap","domainName":"github"},"branch":"master","displayName":"matochichap/ip[master]","outputFolderName":"matochichap_ip_master"},{"location":{"location":"https://github.com/sk2001git/ip.git","repoName":"ip","organization":"sk2001git","domainName":"github"},"branch":"master","displayName":"sk2001git/ip[master]","outputFolderName":"sk2001git_ip_master"},{"location":{"location":"https://github.com/jason-raiin/ip.git","repoName":"ip","organization":"jason-raiin","domainName":"github"},"branch":"master","displayName":"jason-raiin/ip[master]","outputFolderName":"jason-raiin_ip_master"},{"location":{"location":"https://github.com/Sebtey/ip.git","repoName":"ip","organization":"Sebtey","domainName":"github"},"branch":"master","displayName":"Sebtey/ip[master]","outputFolderName":"Sebtey_ip_master"},{"location":{"location":"https://github.com/Jweng88/ip.git","repoName":"ip","organization":"Jweng88","domainName":"github"},"branch":"master","displayName":"Jweng88/ip[master]","outputFolderName":"Jweng88_ip_master"},{"location":{"location":"https://github.com/billieboy7/ip.git","repoName":"ip","organization":"billieboy7","domainName":"github"},"branch":"master","displayName":"billieboy7/ip[master]","outputFolderName":"billieboy7_ip_master"},{"location":{"location":"https://github.com/ldinghan/ip.git","repoName":"ip","organization":"ldinghan","domainName":"github"},"branch":"master","displayName":"ldinghan/ip[master]","outputFolderName":"ldinghan_ip_master"},{"location":{"location":"https://github.com/anthonytamzil/ip.git","repoName":"ip","organization":"anthonytamzil","domainName":"github"},"branch":"master","displayName":"anthonytamzil/ip[master]","outputFolderName":"anthonytamzil_ip_master"},{"location":{"location":"https://github.com/ryantzr1/ip.git","repoName":"ip","organization":"ryantzr1","domainName":"github"},"branch":"master","displayName":"ryantzr1/ip[master]","outputFolderName":"ryantzr1_ip_master"},{"location":{"location":"https://github.com/shuyangk/ip.git","repoName":"ip","organization":"shuyangk","domainName":"github"},"branch":"master","displayName":"shuyangk/ip[master]","outputFolderName":"shuyangk_ip_master"},{"location":{"location":"https://github.com/seewhyjay/ip.git","repoName":"ip","organization":"seewhyjay","domainName":"github"},"branch":"master","displayName":"seewhyjay/ip[master]","outputFolderName":"seewhyjay_ip_master"},{"location":{"location":"https://github.com/waseemingly/ip.git","repoName":"ip","organization":"waseemingly","domainName":"github"},"branch":"master","displayName":"waseemingly/ip[master]","outputFolderName":"waseemingly_ip_master"},{"location":{"location":"https://github.com/DistractedCat/ip.git","repoName":"ip","organization":"DistractedCat","domainName":"github"},"branch":"master","displayName":"DistractedCat/ip[master]","outputFolderName":"DistractedCat_ip_master"},{"location":{"location":"https://github.com/geraldngjx/ip.git","repoName":"ip","organization":"geraldngjx","domainName":"github"},"branch":"master","displayName":"geraldngjx/ip[master]","outputFolderName":"geraldngjx_ip_master"},{"location":{"location":"https://github.com/tayian/ip.git","repoName":"ip","organization":"tayian","domainName":"github"},"branch":"master","displayName":"tayian/ip[master]","outputFolderName":"tayian_ip_master"},{"location":{"location":"https://github.com/AlfredBeNoel/ip.git","repoName":"ip","organization":"AlfredBeNoel","domainName":"github"},"branch":"master","displayName":"AlfredBeNoel/ip[master]","outputFolderName":"AlfredBeNoel_ip_master"},{"location":{"location":"https://github.com/Chen1x/ip.git","repoName":"ip","organization":"Chen1x","domainName":"github"},"branch":"master","displayName":"Chen1x/ip[master]","outputFolderName":"Chen1x_ip_master"},{"location":{"location":"https://github.com/juzzztinsoong/ip.git","repoName":"ip","organization":"juzzztinsoong","domainName":"github"},"branch":"master","displayName":"juzzztinsoong/ip[master]","outputFolderName":"juzzztinsoong_ip_master"},{"location":{"location":"https://github.com/lambraydon/ip.git","repoName":"ip","organization":"lambraydon","domainName":"github"},"branch":"master","displayName":"lambraydon/ip[master]","outputFolderName":"lambraydon_ip_master"},{"location":{"location":"https://github.com/lilozz2/ip.git","repoName":"ip","organization":"lilozz2","domainName":"github"},"branch":"master","displayName":"lilozz2/ip[master]","outputFolderName":"lilozz2_ip_master"},{"location":{"location":"https://github.com/tyouwei/ip.git","repoName":"ip","organization":"tyouwei","domainName":"github"},"branch":"master","displayName":"tyouwei/ip[master]","outputFolderName":"tyouwei_ip_master"},{"location":{"location":"https://github.com/Kailash201/ip.git","repoName":"ip","organization":"Kailash201","domainName":"github"},"branch":"master","displayName":"Kailash201/ip[master]","outputFolderName":"Kailash201_ip_master"},{"location":{"location":"https://github.com/tjingsheng/ip.git","repoName":"ip","organization":"tjingsheng","domainName":"github"},"branch":"master","displayName":"tjingsheng/ip[master]","outputFolderName":"tjingsheng_ip_master"},{"location":{"location":"https://github.com/pangyyen/ip.git","repoName":"ip","organization":"pangyyen","domainName":"github"},"branch":"master","displayName":"pangyyen/ip[master]","outputFolderName":"pangyyen_ip_master"},{"location":{"location":"https://github.com/Khaleelur-Rahman/ip.git","repoName":"ip","organization":"Khaleelur-Rahman","domainName":"github"},"branch":"master","displayName":"Khaleelur-Rahman/ip[master]","outputFolderName":"Khaleelur-Rahman_ip_master"},{"location":{"location":"https://github.com/erohsikivar/ip.git","repoName":"ip","organization":"erohsikivar","domainName":"github"},"branch":"master","displayName":"erohsikivar/ip[master]","outputFolderName":"erohsikivar_ip_master"},{"location":{"location":"https://github.com/shishirbychapur/ip.git","repoName":"ip","organization":"shishirbychapur","domainName":"github"},"branch":"master","displayName":"shishirbychapur/ip[master]","outputFolderName":"shishirbychapur_ip_master"},{"location":{"location":"https://github.com/Badatprogrammiing/ip.git","repoName":"ip","organization":"Badatprogrammiing","domainName":"github"},"branch":"master","displayName":"Badatprogrammiing/ip[master]","outputFolderName":"Badatprogrammiing_ip_master"},{"location":{"location":"https://github.com/Angelyxx/ip.git","repoName":"ip","organization":"Angelyxx","domainName":"github"},"branch":"master","displayName":"Angelyxx/ip[master]","outputFolderName":"Angelyxx_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/coderhuang559/ip.git","repoName":"ip","organization":"coderhuang559","domainName":"github"},"branch":"master","displayName":"coderhuang559/ip[master]","outputFolderName":"coderhuang559_ip_master"},{"location":{"location":"https://github.com/craigtonlian/ip.git","repoName":"ip","organization":"craigtonlian","domainName":"github"},"branch":"master","displayName":"craigtonlian/ip[master]","outputFolderName":"craigtonlian_ip_master"},{"location":{"location":"https://github.com/adammangzijun/ip.git","repoName":"ip","organization":"adammangzijun","domainName":"github"},"branch":"master","displayName":"adammangzijun/ip[master]","outputFolderName":"adammangzijun_ip_master"},{"location":{"location":"https://github.com/AlainS87/ip.git","repoName":"ip","organization":"AlainS87","domainName":"github"},"branch":"master","displayName":"AlainS87/ip[master]","outputFolderName":"AlainS87_ip_master"},{"location":{"location":"https://github.com/tanyyyming/ip.git","repoName":"ip","organization":"tanyyyming","domainName":"github"},"branch":"master","displayName":"tanyyyming/ip[master]","outputFolderName":"tanyyyming_ip_master"},{"location":{"location":"https://github.com/Saezenn/ip.git","repoName":"ip","organization":"Saezenn","domainName":"github"},"branch":"master","displayName":"Saezenn/ip[master]","outputFolderName":"Saezenn_ip_master"},{"location":{"location":"https://github.com/kayabuttertoastt/ip.git","repoName":"ip","organization":"kayabuttertoastt","domainName":"github"},"branch":"master","displayName":"kayabuttertoastt/ip[master]","outputFolderName":"kayabuttertoastt_ip_master"},{"location":{"location":"https://github.com/limjunxian1/ip.git","repoName":"ip","organization":"limjunxian1","domainName":"github"},"branch":"master","displayName":"limjunxian1/ip[master]","outputFolderName":"limjunxian1_ip_master"},{"location":{"location":"https://github.com/andrechuakj/ip.git","repoName":"ip","organization":"andrechuakj","domainName":"github"},"branch":"master","displayName":"andrechuakj/ip[master]","outputFolderName":"andrechuakj_ip_master"},{"location":{"location":"https://github.com/kwangthiag/ip.git","repoName":"ip","organization":"kwangthiag","domainName":"github"},"branch":"master","displayName":"kwangthiag/ip[master]","outputFolderName":"kwangthiag_ip_master"},{"location":{"location":"https://github.com/ricketytoc/ip.git","repoName":"ip","organization":"ricketytoc","domainName":"github"},"branch":"master","displayName":"ricketytoc/ip[master]","outputFolderName":"ricketytoc_ip_master"},{"location":{"location":"https://github.com/applepiofmyeye/ip.git","repoName":"ip","organization":"applepiofmyeye","domainName":"github"},"branch":"master","displayName":"applepiofmyeye/ip[master]","outputFolderName":"applepiofmyeye_ip_master"},{"location":{"location":"https://github.com/nubnubyas/ip.git","repoName":"ip","organization":"nubnubyas","domainName":"github"},"branch":"master","displayName":"nubnubyas/ip[master]","outputFolderName":"nubnubyas_ip_master"},{"location":{"location":"https://github.com/WeeeHung/ip.git","repoName":"ip","organization":"WeeeHung","domainName":"github"},"branch":"master","displayName":"WeeeHung/ip[master]","outputFolderName":"WeeeHung_ip_master"},{"location":{"location":"https://github.com/Eola-Z/ip.git","repoName":"ip","organization":"Eola-Z","domainName":"github"},"branch":"master","displayName":"Eola-Z/ip[master]","outputFolderName":"Eola-Z_ip_master"},{"location":{"location":"https://github.com/jordankanghm/ip.git","repoName":"ip","organization":"jordankanghm","domainName":"github"},"branch":"master","displayName":"jordankanghm/ip[master]","outputFolderName":"jordankanghm_ip_master"},{"location":{"location":"https://github.com/zacwong2151/ip.git","repoName":"ip","organization":"zacwong2151","domainName":"github"},"branch":"master","displayName":"zacwong2151/ip[master]","outputFolderName":"zacwong2151_ip_master"},{"location":{"location":"https://github.com/m1oojv/ip.git","repoName":"ip","organization":"m1oojv","domainName":"github"},"branch":"master","displayName":"m1oojv/ip[master]","outputFolderName":"m1oojv_ip_master"},{"location":{"location":"https://github.com/JCSnap/ip.git","repoName":"ip","organization":"JCSnap","domainName":"github"},"branch":"master","displayName":"JCSnap/ip[master]","outputFolderName":"JCSnap_ip_master"},{"location":{"location":"https://github.com/Nid21cs/ip.git","repoName":"ip","organization":"Nid21cs","domainName":"github"},"branch":"master","displayName":"Nid21cs/ip[master]","outputFolderName":"Nid21cs_ip_master"},{"location":{"location":"https://github.com/mfjkri/ip.git","repoName":"ip","organization":"mfjkri","domainName":"github"},"branch":"master","displayName":"mfjkri/ip[master]","outputFolderName":"mfjkri_ip_master"},{"location":{"location":"https://github.com/Choonyan02/ip.git","repoName":"ip","organization":"Choonyan02","domainName":"github"},"branch":"master","displayName":"Choonyan02/ip[master]","outputFolderName":"Choonyan02_ip_master"},{"location":{"location":"https://github.com/rayyan35p/ip.git","repoName":"ip","organization":"rayyan35p","domainName":"github"},"branch":"master","displayName":"rayyan35p/ip[master]","outputFolderName":"rayyan35p_ip_master"},{"location":{"location":"https://github.com/dhruvir29/ip.git","repoName":"ip","organization":"dhruvir29","domainName":"github"},"branch":"master","displayName":"dhruvir29/ip[master]","outputFolderName":"dhruvir29_ip_master"},{"location":{"location":"https://github.com/Mohammed-Faizzzz/ip.git","repoName":"ip","organization":"Mohammed-Faizzzz","domainName":"github"},"branch":"master","displayName":"Mohammed-Faizzzz/ip[master]","outputFolderName":"Mohammed-Faizzzz_ip_master"},{"location":{"location":"https://github.com/ruo-x/ip.git","repoName":"ip","organization":"ruo-x","domainName":"github"},"branch":"master","displayName":"ruo-x/ip[master]","outputFolderName":"ruo-x_ip_master"},{"location":{"location":"https://github.com/DonovanJJ/ip.git","repoName":"ip","organization":"DonovanJJ","domainName":"github"},"branch":"master","displayName":"DonovanJJ/ip[master]","outputFolderName":"DonovanJJ_ip_master"},{"location":{"location":"https://github.com/kristayeo/ip.git","repoName":"ip","organization":"kristayeo","domainName":"github"},"branch":"master","displayName":"kristayeo/ip[master]","outputFolderName":"kristayeo_ip_master"},{"location":{"location":"https://github.com/ZD292/ip.git","repoName":"ip","organization":"ZD292","domainName":"github"},"branch":"master","displayName":"ZD292/ip[master]","outputFolderName":"ZD292_ip_master"},{"location":{"location":"https://github.com/jingjie88/ip.git","repoName":"ip","organization":"jingjie88","domainName":"github"},"branch":"master","displayName":"jingjie88/ip[master]","outputFolderName":"jingjie88_ip_master"},{"location":{"location":"https://github.com/iantsaii/ip.git","repoName":"ip","organization":"iantsaii","domainName":"github"},"branch":"master","displayName":"iantsaii/ip[master]","outputFolderName":"iantsaii_ip_master"},{"location":{"location":"https://github.com/jingting1412/ip.git","repoName":"ip","organization":"jingting1412","domainName":"github"},"branch":"master","displayName":"jingting1412/ip[master]","outputFolderName":"jingting1412_ip_master"},{"location":{"location":"https://github.com/wnchan/ip.git","repoName":"ip","organization":"wnchan","domainName":"github"},"branch":"master","displayName":"wnchan/ip[master]","outputFolderName":"wnchan_ip_master"},{"location":{"location":"https://github.com/jack1e0/ip.git","repoName":"ip","organization":"jack1e0","domainName":"github"},"branch":"master","displayName":"jack1e0/ip[master]","outputFolderName":"jack1e0_ip_master"},{"location":{"location":"https://github.com/mingyu-wan/ip.git","repoName":"ip","organization":"mingyu-wan","domainName":"github"},"branch":"master","displayName":"mingyu-wan/ip[master]","outputFolderName":"mingyu-wan_ip_master"},{"location":{"location":"https://github.com/nicolengk/ip.git","repoName":"ip","organization":"nicolengk","domainName":"github"},"branch":"master","displayName":"nicolengk/ip[master]","outputFolderName":"nicolengk_ip_master"},{"location":{"location":"https://github.com/cyaoxuan/ip.git","repoName":"ip","organization":"cyaoxuan","domainName":"github"},"branch":"master","displayName":"cyaoxuan/ip[master]","outputFolderName":"cyaoxuan_ip_master"},{"location":{"location":"https://github.com/sunzihan23/ip.git","repoName":"ip","organization":"sunzihan23","domainName":"github"},"branch":"master","displayName":"sunzihan23/ip[master]","outputFolderName":"sunzihan23_ip_master"},{"location":{"location":"https://github.com/Goh-Li-Ting/ip.git","repoName":"ip","organization":"Goh-Li-Ting","domainName":"github"},"branch":"master","displayName":"Goh-Li-Ting/ip[master]","outputFolderName":"Goh-Li-Ting_ip_master"},{"location":{"location":"https://github.com/wjayee/ip.git","repoName":"ip","organization":"wjayee","domainName":"github"},"branch":"master","displayName":"wjayee/ip[master]","outputFolderName":"wjayee_ip_master"},{"location":{"location":"https://github.com/fuyiqiao/ip.git","repoName":"ip","organization":"fuyiqiao","domainName":"github"},"branch":"master","displayName":"fuyiqiao/ip[master]","outputFolderName":"fuyiqiao_ip_master"},{"location":{"location":"https://github.com/GlendaChong/ip.git","repoName":"ip","organization":"GlendaChong","domainName":"github"},"branch":"master","displayName":"GlendaChong/ip[master]","outputFolderName":"GlendaChong_ip_master"},{"location":{"location":"https://github.com/hyc17003/ip.git","repoName":"ip","organization":"hyc17003","domainName":"github"},"branch":"master","displayName":"hyc17003/ip[master]","outputFolderName":"hyc17003_ip_master"},{"location":{"location":"https://github.com/spatuly/ip.git","repoName":"ip","organization":"spatuly","domainName":"github"},"branch":"master","displayName":"spatuly/ip[master]","outputFolderName":"spatuly_ip_master"},{"location":{"location":"https://github.com/tanteckfang/ip.git","repoName":"ip","organization":"tanteckfang","domainName":"github"},"branch":"master","displayName":"tanteckfang/ip[master]","outputFolderName":"tanteckfang_ip_master"},{"location":{"location":"https://github.com/Clin-lyx/ip.git","repoName":"ip","organization":"Clin-lyx","domainName":"github"},"branch":"master","displayName":"Clin-lyx/ip[master]","outputFolderName":"Clin-lyx_ip_master"},{"location":{"location":"https://github.com/lyuanww/ip.git","repoName":"ip","organization":"lyuanww","domainName":"github"},"branch":"master","displayName":"lyuanww/ip[master]","outputFolderName":"lyuanww_ip_master"},{"location":{"location":"https://github.com/LimJH2002/ip.git","repoName":"ip","organization":"LimJH2002","domainName":"github"},"branch":"master","displayName":"LimJH2002/ip[master]","outputFolderName":"LimJH2002_ip_master"},{"location":{"location":"https://github.com/LWZ19/ip.git","repoName":"ip","organization":"LWZ19","domainName":"github"},"branch":"master","displayName":"LWZ19/ip[master]","outputFolderName":"LWZ19_ip_master"},{"location":{"location":"https://github.com/Gavino3o/ip.git","repoName":"ip","organization":"Gavino3o","domainName":"github"},"branch":"master","displayName":"Gavino3o/ip[master]","outputFolderName":"Gavino3o_ip_master"},{"location":{"location":"https://github.com/suryanshkushwaha/ip.git","repoName":"ip","organization":"suryanshkushwaha","domainName":"github"},"branch":"master","displayName":"suryanshkushwaha/ip[master]","outputFolderName":"suryanshkushwaha_ip_master"},{"location":{"location":"https://github.com/JasonRay168/ip.git","repoName":"ip","organization":"JasonRay168","domainName":"github"},"branch":"master","displayName":"JasonRay168/ip[master]","outputFolderName":"JasonRay168_ip_master"},{"location":{"location":"https://github.com/jovkusuma/ip.git","repoName":"ip","organization":"jovkusuma","domainName":"github"},"branch":"master","displayName":"jovkusuma/ip[master]","outputFolderName":"jovkusuma_ip_master"},{"location":{"location":"https://github.com/Chrainx/ip.git","repoName":"ip","organization":"Chrainx","domainName":"github"},"branch":"master","displayName":"Chrainx/ip[master]","outputFolderName":"Chrainx_ip_master"},{"location":{"location":"https://github.com/Daphne789/ip.git","repoName":"ip","organization":"Daphne789","domainName":"github"},"branch":"master","displayName":"Daphne789/ip[master]","outputFolderName":"Daphne789_ip_master"},{"location":{"location":"https://github.com/ChuanXinNg/ip.git","repoName":"ip","organization":"ChuanXinNg","domainName":"github"},"branch":"master","displayName":"ChuanXinNg/ip[master]","outputFolderName":"ChuanXinNg_ip_master"},{"location":{"location":"https://github.com/LHeng1/ip.git","repoName":"ip","organization":"LHeng1","domainName":"github"},"branch":"master","displayName":"LHeng1/ip[master]","outputFolderName":"LHeng1_ip_master"},{"location":{"location":"https://github.com/wr1159/ip.git","repoName":"ip","organization":"wr1159","domainName":"github"},"branch":"master","displayName":"wr1159/ip[master]","outputFolderName":"wr1159_ip_master"},{"location":{"location":"https://github.com/wjacobw/ip.git","repoName":"ip","organization":"wjacobw","domainName":"github"},"branch":"master","displayName":"wjacobw/ip[master]","outputFolderName":"wjacobw_ip_master"},{"location":{"location":"https://github.com/tiongjjyi/ip.git","repoName":"ip","organization":"tiongjjyi","domainName":"github"},"branch":"master","displayName":"tiongjjyi/ip[master]","outputFolderName":"tiongjjyi_ip_master"},{"location":{"location":"https://github.com/longnguyentan/ip.git","repoName":"ip","organization":"longnguyentan","domainName":"github"},"branch":"master","displayName":"longnguyentan/ip[master]","outputFolderName":"longnguyentan_ip_master"},{"location":{"location":"https://github.com/proto-aiken-13/ip.git","repoName":"ip","organization":"proto-aiken-13","domainName":"github"},"branch":"master","displayName":"proto-aiken-13/ip[master]","outputFolderName":"proto-aiken-13_ip_master"},{"location":{"location":"https://github.com/junnengsoo/ip.git","repoName":"ip","organization":"junnengsoo","domainName":"github"},"branch":"master","displayName":"junnengsoo/ip[master]","outputFolderName":"junnengsoo_ip_master"},{"location":{"location":"https://github.com/yezkez10/ip.git","repoName":"ip","organization":"yezkez10","domainName":"github"},"branch":"master","displayName":"yezkez10/ip[master]","outputFolderName":"yezkez10_ip_master"},{"location":{"location":"https://github.com/jamesebond/ip.git","repoName":"ip","organization":"jamesebond","domainName":"github"},"branch":"master","displayName":"jamesebond/ip[master]","outputFolderName":"jamesebond_ip_master"},{"location":{"location":"https://github.com/alyssaongyx/ip.git","repoName":"ip","organization":"alyssaongyx","domainName":"github"},"branch":"master","displayName":"alyssaongyx/ip[master]","outputFolderName":"alyssaongyx_ip_master"},{"location":{"location":"https://github.com/Carlintyj/ip.git","repoName":"ip","organization":"Carlintyj","domainName":"github"},"branch":"master","displayName":"Carlintyj/ip[master]","outputFolderName":"Carlintyj_ip_master"},{"location":{"location":"https://github.com/ruth-lim/ip.git","repoName":"ip","organization":"ruth-lim","domainName":"github"},"branch":"master","displayName":"ruth-lim/ip[master]","outputFolderName":"ruth-lim_ip_master"},{"location":{"location":"https://github.com/licongshen12/ip.git","repoName":"ip","organization":"licongshen12","domainName":"github"},"branch":"master","displayName":"licongshen12/ip[master]","outputFolderName":"licongshen12_ip_master"},{"location":{"location":"https://github.com/thaddeusong/ip.git","repoName":"ip","organization":"thaddeusong","domainName":"github"},"branch":"master","displayName":"thaddeusong/ip[master]","outputFolderName":"thaddeusong_ip_master"},{"location":{"location":"https://github.com/LordSaumya/ip.git","repoName":"ip","organization":"LordSaumya","domainName":"github"},"branch":"master","displayName":"LordSaumya/ip[master]","outputFolderName":"LordSaumya_ip_master"},{"location":{"location":"https://github.com/Kevin-Liusx/ip.git","repoName":"ip","organization":"Kevin-Liusx","domainName":"github"},"branch":"master","displayName":"Kevin-Liusx/ip[master]","outputFolderName":"Kevin-Liusx_ip_master"},{"location":{"location":"https://github.com/Ken-Lai/ip.git","repoName":"ip","organization":"Ken-Lai","domainName":"github"},"branch":"master","displayName":"Ken-Lai/ip[master]","outputFolderName":"Ken-Lai_ip_master"},{"location":{"location":"https://github.com/KumChaiYin/ip.git","repoName":"ip","organization":"KumChaiYin","domainName":"github"},"branch":"master","displayName":"KumChaiYin/ip[master]","outputFolderName":"KumChaiYin_ip_master"},{"location":{"location":"https://github.com/pzl111/ip.git","repoName":"ip","organization":"pzl111","domainName":"github"},"branch":"master","displayName":"pzl111/ip[master]","outputFolderName":"pzl111_ip_master"},{"location":{"location":"https://github.com/alientian/ip.git","repoName":"ip","organization":"alientian","domainName":"github"},"branch":"master","displayName":"alientian/ip[master]","outputFolderName":"alientian_ip_master"},{"location":{"location":"https://github.com/eyelessrhyme7/ip.git","repoName":"ip","organization":"eyelessrhyme7","domainName":"github"},"branch":"master","displayName":"eyelessrhyme7/ip[master]","outputFolderName":"eyelessrhyme7_ip_master"},{"location":{"location":"https://github.com/AprupKale/ip.git","repoName":"ip","organization":"AprupKale","domainName":"github"},"branch":"master","displayName":"AprupKale/ip[master]","outputFolderName":"AprupKale_ip_master"},{"location":{"location":"https://github.com/kimshitong/ip.git","repoName":"ip","organization":"kimshitong","domainName":"github"},"branch":"master","displayName":"kimshitong/ip[master]","outputFolderName":"kimshitong_ip_master"},{"location":{"location":"https://github.com/Bryan-Goh/ip.git","repoName":"ip","organization":"Bryan-Goh","domainName":"github"},"branch":"master","displayName":"Bryan-Goh/ip[master]","outputFolderName":"Bryan-Goh_ip_master"},{"location":{"location":"https://github.com/tiif/ip.git","repoName":"ip","organization":"tiif","domainName":"github"},"branch":"master","displayName":"tiif/ip[master]","outputFolderName":"tiif_ip_master"},{"location":{"location":"https://github.com/angkyakdifp/ip.git","repoName":"ip","organization":"angkyakdifp","domainName":"github"},"branch":"master","displayName":"angkyakdifp/ip[master]","outputFolderName":"angkyakdifp_ip_master"},{"location":{"location":"https://github.com/Chen-Kuei/ip.git","repoName":"ip","organization":"Chen-Kuei","domainName":"github"},"branch":"master","displayName":"Chen-Kuei/ip[master]","outputFolderName":"Chen-Kuei_ip_master"},{"location":{"location":"https://github.com/SinhaVedant/ip.git","repoName":"ip","organization":"SinhaVedant","domainName":"github"},"branch":"master","displayName":"SinhaVedant/ip[master]","outputFolderName":"SinhaVedant_ip_master"},{"location":{"location":"https://github.com/D-Limiter/ip.git","repoName":"ip","organization":"D-Limiter","domainName":"github"},"branch":"master","displayName":"D-Limiter/ip[master]","outputFolderName":"D-Limiter_ip_master"},{"location":{"location":"https://github.com/larrywang0701/ip.git","repoName":"ip","organization":"larrywang0701","domainName":"github"},"branch":"master","displayName":"larrywang0701/ip[master]","outputFolderName":"larrywang0701_ip_master"},{"location":{"location":"https://github.com/Song-Mengfei/ip.git","repoName":"ip","organization":"Song-Mengfei","domainName":"github"},"branch":"master","displayName":"Song-Mengfei/ip[master]","outputFolderName":"Song-Mengfei_ip_master"},{"location":{"location":"https://github.com/ChangruHenryQian/ip.git","repoName":"ip","organization":"ChangruHenryQian","domainName":"github"},"branch":"master","displayName":"ChangruHenryQian/ip[master]","outputFolderName":"ChangruHenryQian_ip_master"},{"location":{"location":"https://github.com/ketweeen/ip.git","repoName":"ip","organization":"ketweeen","domainName":"github"},"branch":"master","displayName":"ketweeen/ip[master]","outputFolderName":"ketweeen_ip_master"},{"location":{"location":"https://github.com/RSXIX/ip.git","repoName":"ip","organization":"RSXIX","domainName":"github"},"branch":"master","displayName":"RSXIX/ip[master]","outputFolderName":"RSXIX_ip_master"},{"location":{"location":"https://github.com/songgthu/ip.git","repoName":"ip","organization":"songgthu","domainName":"github"},"branch":"master","displayName":"songgthu/ip[master]","outputFolderName":"songgthu_ip_master"},{"location":{"location":"https://github.com/maj0-0/ip.git","repoName":"ip","organization":"maj0-0","domainName":"github"},"branch":"master","displayName":"maj0-0/ip[master]","outputFolderName":"maj0-0_ip_master"},{"location":{"location":"https://github.com/tiongMax/ip.git","repoName":"ip","organization":"tiongMax","domainName":"github"},"branch":"master","displayName":"tiongMax/ip[master]","outputFolderName":"tiongMax_ip_master"},{"location":{"location":"https://github.com/A1WAYSD/ip.git","repoName":"ip","organization":"A1WAYSD","domainName":"github"},"branch":"master","displayName":"A1WAYSD/ip[master]","outputFolderName":"A1WAYSD_ip_master"},{"location":{"location":"https://github.com/hjoneweek/ip.git","repoName":"ip","organization":"hjoneweek","domainName":"github"},"branch":"master","displayName":"hjoneweek/ip[master]","outputFolderName":"hjoneweek_ip_master"},{"location":{"location":"https://github.com/itsNatTan/ip.git","repoName":"ip","organization":"itsNatTan","domainName":"github"},"branch":"master","displayName":"itsNatTan/ip[master]","outputFolderName":"itsNatTan_ip_master"},{"location":{"location":"https://github.com/AustinHuang1203/ip.git","repoName":"ip","organization":"AustinHuang1203","domainName":"github"},"branch":"master","displayName":"AustinHuang1203/ip[master]","outputFolderName":"AustinHuang1203_ip_master"},{"location":{"location":"https://github.com/WangCheng0116/ip.git","repoName":"ip","organization":"WangCheng0116","domainName":"github"},"branch":"master","displayName":"WangCheng0116/ip[master]","outputFolderName":"WangCheng0116_ip_master"},{"location":{"location":"https://github.com/Tim-Siu/ip.git","repoName":"ip","organization":"Tim-Siu","domainName":"github"},"branch":"master","displayName":"Tim-Siu/ip[master]","outputFolderName":"Tim-Siu_ip_master"},{"location":{"location":"https://github.com/newway1814/ip.git","repoName":"ip","organization":"newway1814","domainName":"github"},"branch":"master","displayName":"newway1814/ip[master]","outputFolderName":"newway1814_ip_master"},{"location":{"location":"https://github.com/li-rongzhi/ip.git","repoName":"ip","organization":"li-rongzhi","domainName":"github"},"branch":"master","displayName":"li-rongzhi/ip[master]","outputFolderName":"li-rongzhi_ip_master"},{"location":{"location":"https://github.com/adhigop13/ip.git","repoName":"ip","organization":"adhigop13","domainName":"github"},"branch":"master","displayName":"adhigop13/ip[master]","outputFolderName":"adhigop13_ip_master"},{"location":{"location":"https://github.com/MadLamprey/ip.git","repoName":"ip","organization":"MadLamprey","domainName":"github"},"branch":"master","displayName":"MadLamprey/ip[master]","outputFolderName":"MadLamprey_ip_master"}],"errorSet":[{"repoName":"Propene-Dan/ip[master]","errorMessage":"Failed to clone from https://github.com/Propene-Dan/ip.git"},{"repoName":"Cloud7050/ip[master]","errorMessage":"Failed to clone from https://github.com/Cloud7050/ip.git"},{"repoName":"papataco14/ip[master]","errorMessage":"Failed to clone from https://github.com/papataco14/ip.git"},{"repoName":"felibunnyy/ip[master]","errorMessage":"Failed to clone from https://github.com/felibunnyy/ip.git"},{"repoName":"starrylight99/ip[master]","errorMessage":"Failed to clone from https://github.com/starrylight99/ip.git"}],"sinceDate":"2023-08-18","untilDate":"2023-08-28","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/tjch-o_ip_master/authorship.json b/tjch-o_ip_master/authorship.json index 428f7655..4865dd81 100644 --- a/tjch-o_ip_master/authorship.json +++ b/tjch-o_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":"tjch-o"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"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":{"tjch-o":1,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private static String filePath \u003d \"../../../data/duke.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private static String directoryPath \u003d \"../../../data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d this.storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" boolean shouldExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" Parser parser \u003d new Parser(this.storage, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" while (!shouldExit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" shouldExit \u003d parser.parse(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" scanner.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" this.ui.exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" new Duke(filePath).run();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tjch-o":32,"-":3}},{"path":"src/main/java/duke/DukeExceptionHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"public class DukeExceptionHandler {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" public static void handleEmptyInput() {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" Input a task my brother.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public static void handleUnseenInput() {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" I\u0027m sorry brother, I do not have a Scooby :-(\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public static void printErrorMsg(String s) {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" \" + s);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" public static void handleTaskNumOutOfBounds(int taskNum) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" There is no task \" + taskNum + \", friend.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tjch-o":30}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" public Parser(Storage storage, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" * Method that handles input with the command \"mark\" or \"unmark\".","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" * @param command the command that the user inputs: either \"mark\" or \"unmark\"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" * @param input what the user inputs ","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * @return the task number that the user wants to mark or unmark","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" public static int getTaskNumber(String command, String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" String taskNum \u003d input.replace(command + \" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" // remove leading and trailing whitespaces","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" String trimmedTaskNum \u003d taskNum.trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" return Integer.valueOf(trimmedTaskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public boolean parse(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" int n \u003d this.taskList.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" boolean toBreak \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" toBreak \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" } else if (input.equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleEmptyInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" this.taskList.displayList();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" // mark is in the word unmark so this case has to go first","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"unmark\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" this.taskList.markTaskAsUndone(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"mark\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" this.taskList.markTaskAsDone(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" ToDo newToDo \u003d new ToDo(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newToDo, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newToDo, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" Deadline newDeadline \u003d new Deadline(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newDeadline, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newDeadline, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" Event newEvent \u003d new Event(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newEvent, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newEvent, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"delete\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" Task task \u003d taskList.deleteTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" this.ui.printDeletedTask(task, n - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"delete\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleUnseenInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" return toBreak;","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":92}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" private String directoryPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public Storage(String filePath, String directoryPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" this.directoryPath \u003d directoryPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * Adds task into task list and triggers a save to the text file when the user adds a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * @param task the task to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" * @param taskList the task list containing the task to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" public void saveWhenAddTask(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" this.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" * Loads the file from the data folder if it exists, else it creates a new file for users to ","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" * store their tasks.","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" * @returns TaskList a TaskList object containing the tasks from the file","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" * @throws IOException if there is an error creating the file ","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" public TaskList loadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" File directory \u003d new File(this.directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" File newFile \u003d new File(this.filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" // check if directory exists","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" // check if file exists","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" if (!newFile.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" newFile.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" System.out.println(\"created a new file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" return new TaskList(); ","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" Scanner scanner \u003d new Scanner(newFile);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new ToDo(\"todo \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" String deadline \u003d parts[3].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new Deadline(task, deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask); ","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" return taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" System.out.println(\"Error creating file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"tjch-o"},"content":" return new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"tjch-o"},"content":" * Saves the tasks in the task list to the text file.","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"tjch-o"},"content":" * @param taskList the task list containing the tasks to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"tjch-o"},"content":" * @throws IOException if there is an error writing to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"tjch-o"},"content":" public void saveFile(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"tjch-o"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"tjch-o"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"tjch-o"},"content":" int n \u003d taskList.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c n; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"tjch-o"},"content":" Task currentTask \u003d taskList.getTask(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"tjch-o"},"content":" String s \u003d currentTask.stringToSave();","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.write(s);","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"tjch-o"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"tjch-o"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":126}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" public Task deleteTask(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" Task deletedTask \u003d this.taskList.remove(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" return deletedTask;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" public Task getTask(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" return this.taskList.get(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public int getSize() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" public void updateTaskStatusFromFile(Task task, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" if (status.equals(\"[X]\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" public void markTaskAsDone(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" if (taskNum \u003c\u003d 0 || taskNum \u003e this.taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" Task task \u003d this.getTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" public void markTaskAsUndone(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" if (taskNum \u003c\u003d 0 || taskNum \u003e taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" Task task \u003d this.getTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" * Method that prints every task in the task list.","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" public void displayList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" int n \u003d this.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c n; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" String output \u003d \" \" + (i + 1) + \". \" + currentTask.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" ui.formatString(output);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":87}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private String divider \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private String indent \u003d \" \";","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" * Adds indentation to the string given and prints it out.","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" * @params s the string to be indented","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" public void formatString(String s) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" System.out.println(indent + s);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void showLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" formatString(divider);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" String chatbotName \u003d \"Miles\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" formatString(\" Hey! I\u0027m \" + chatbotName + \"!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" formatString(\" What can I do for you, my friend?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" public void printAddedTask(Task task, int n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" formatString(\" Gotcha. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" formatString(\" Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" public void printDeletedTask(Task task, int n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" formatString(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" formatString(\" Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" public void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" formatString(\" Stay safe my friend. See you again soon man.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":51}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" // private String deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"OOPS!!! The description of a deadline cannot be empty.\";","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public Deadline(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" super(getTask(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" this.deadline \u003d this.convertToDateTime(this.getDeadline(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" public Deadline(String task, String deadline) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" super(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" this.deadline \u003d this.convertToDateTime(deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" * Returns an array of 2 elements, the first element is the task, the second is the deadline. ","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" * Worth noting that the task and deadline strings here still have whitespaces that need to be","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" * trimmed for use.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task and deadline","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * @return an array of 2 strings","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" public static String[] splitDeadlineString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" // removes \"deadline \" from the task string","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" String removeCmd \u003d taskString.substring(9);","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(removeCmd)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" // we know the array has 2 elements ","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d removeCmd.split(\"/by\");","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid deadline format: missing /by\");","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" return arr;","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" * Returns the task from a input string that starts with \"deadline\".","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"deadline\"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" * @return the task","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" public static String getTask(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitDeadlineString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" String task \u003d arr[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(task)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" // we remove the white space behind the task","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" return task.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" * Returns the deadline from a input string that starts with \"deadline\".","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"deadline\"","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" * @return the deadline","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" public String getDeadline(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitDeadlineString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" String deadline \u003d arr[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(deadline)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" // remove the whitespace in front ","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" return deadline.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" public String displayDeadline() {","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" public String saveDeadline() {","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" return \"D\" + super.stringToSave() + \" | \" + this.saveDeadline(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.displayDeadline() + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":97}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public Event(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" // this is for creating a task with the \"event\" command","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" super(getTask(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.startTime \u003d this.convertToDateTime(this.getStartTime(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.endTime \u003d this.convertToDateTime(getEndTime(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" public Event(String task, String startTime, String endTime) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" // this is for loading the file","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" super(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" this.startTime \u003d this.convertToDateTime(startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" this.endTime \u003d this.convertToDateTime(endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * Returns an array of 3 elements, the first element is the task, the second is the start time,","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * the third is the end time. Worth noting that the task, start time and end time strings here ","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" * still have whitespaces that need to be trimmed for use.","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task, start time and end time","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" * @return an array of 3 strings","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" public static String[] splitEventString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" String removeCmd \u003d taskString.substring(6);","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(removeCmd)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" String[] arr1 \u003d removeCmd.split(\"/from\");","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" if (arr1.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid event format: missing /from\");","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(arr1[0])) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" // we still need to split the 2nd element because it contains both the start and end time","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" String secondPart \u003d arr1[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" String[] arr2 \u003d secondPart.split(\"/to\");","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" if (arr2.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid event format: missing /to\");","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" String[] output \u003d {arr1[0], arr2[0], arr2[1]};","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" * Returns the task from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" * @return the task","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" public static String getTask(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String task \u003d arr[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(task)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" // remove the whitespace in front ","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" return task.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" * Returns the start time from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" * @return the start time","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" public String getStartTime(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" String startTime \u003d arr[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(startTime)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The start time of a event cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" return startTime.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":" * Returns the end time from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"tjch-o"},"content":" * @return the end time","lastModifiedDate":"2023-08-20"},{"lineNumber":101,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":102,"author":{"gitId":"tjch-o"},"content":" public String getEndTime(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"tjch-o"},"content":" String endTime \u003d arr[2];","lastModifiedDate":"2023-08-20"},{"lineNumber":105,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(endTime)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The end time of a event cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"tjch-o"},"content":" return endTime.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":112,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":113,"author":{"gitId":"tjch-o"},"content":" public String displayStartTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"tjch-o"},"content":" public String saveStartTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"tjch-o"},"content":" public String displayEndTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"tjch-o"},"content":" public String saveEndTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"tjch-o"},"content":" return \"E\" + super.stringToSave() + \" | \" + this.saveStartTime() + \" | \" + ","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"tjch-o"},"content":" this.saveEndTime(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":136,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":137,"author":{"gitId":"tjch-o"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.displayStartTime() + \" to: \" + ","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"tjch-o"},"content":" this.displayEndTime() + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":140,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":140}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"/*","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" * Abstract class that represents a general task.","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" private String task;","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" public static boolean checkTaskNoDescription(String taskType, String task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" return taskType.equals(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" public static boolean checkAllWhiteSpace(String s) {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c s.length(); i +\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" if (s.charAt(i) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" return false;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" return true;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" return \" | \" + status + \" | \" + task;","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" * Converts a string to a LocalDateTime object. This is for the deadline and event classes.","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" * @param s the string inputted by the user in the format \"2019-10-15 1800\"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" * @return LocalDateTime object","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" public LocalDateTime convertToDateTime(String s) {","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" return LocalDateTime.parse(s, formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" public String saveTime(LocalDateTime time) {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" return time.format(formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" public String displayTime(LocalDateTime time) {","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" return time.format(formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-19"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" return status + \" \" + task;","lastModifiedDate":"2023-08-19"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"tjch-o":69}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"\\u2639 OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" public ToDo(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" super(formatToDoString(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" * Formats the task string by slicing it to remove the \"todo \" part.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" * @return the clean version of the task string","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public static String formatToDoString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" String output \u003d taskString.substring(5);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(output)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" return output.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" return \"T\" + super.stringToSave(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":37}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public void testGetTaskNumberMark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d Parser.getTaskNumber(\"mark\", \"mark 1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" assertEquals(1, taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public void testGetTaskNumberUnmark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d Parser.getTaskNumber(\"unmark\", \"unmark 100\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" assertEquals(100, taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":19}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" public void testLoadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" String directoryPath \u003d \"../../data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" String filePath \u003d \"../../data/test1.txt\";","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" Storage storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" assertEquals(3, taskList.getSize());","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" Task task1 \u003d taskList.getTask(0);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" Task task1Expected \u003d new Deadline(\"deadline buy soju /by 2023-08-26 2300\");","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" assertEquals(task1.toString(), task1Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" Task task2 \u003d taskList.getTask(1);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" Task task2Expected \u003d new Event(\"event orbital splashdown /from 2023-08-30 1700 /to 2023-08-30 1930\");","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" task2Expected.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" assertEquals(task2.toString(), task2Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" Task task3 \u003d taskList.getTask(2);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" Task task3Expected \u003d new ToDo (\"todo eat mcgriddles\");","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" assertEquals(task3.toString(), task3Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":34}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"public class EventTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public void testSplitEventString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"project meeting\", arr[0].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"2019-10-15 1800\", arr[1].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"2019-10-15 2000\", arr[2].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" public void emptyEvent() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg); ","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" public void missingDescription() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event /from 2019-10-15 1800 /to\";","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" public void missingFrom() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"Invalid event format: missing /from\";","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" public void missingTo() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"Invalid event format: missing /to\";","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" public void testStringToSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" Event event \u003d new Event(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" String expected \u003d \"E | [ ] | project meeting | 2019-10-15 1800 | 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" assertEquals(expected, event.stringToSave());","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" public void testStringToSaveMarked() {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" Event event \u003d new Event(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" String expected \u003d \"E | [X] | project meeting | 2019-10-15 1800 | 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" assertEquals(expected, event.stringToSave());","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":90}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"blah","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"todo read book","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"deadline return book by June 6th","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"deadline /by June 6th","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"deadline return book /by ","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"event","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"event project meeting from Aug 6th 2pm to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"event /from Aug 6th 2pm /to 4pm ","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":"event project meeting /from Aug 6th 2pm","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"event project meeting /to 4pm ","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":"event project meeting /from Aug 6th 2pm /to 4pm ","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":"todo join sports club","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"todo borrow book","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"mark 10","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"unmark 10","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"delete 10","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"mark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"unmark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"delete -1","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":"unmark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":32}}] +[{"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":"tjch-o"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"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":{"tjch-o":1,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-19"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private static String filePath \u003d \"../../../data/duke.txt\";","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private static String directoryPath \u003d \"../../../data\";","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" public Duke(String filePath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d this.storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void run() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.ui.greet();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" boolean shouldExit \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" Parser parser \u003d new Parser(this.storage, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" while (!shouldExit) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" shouldExit \u003d parser.parse(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" scanner.close();","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" this.ui.exit();","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-19"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-19"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" new Duke(filePath).run();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tjch-o":32,"-":3}},{"path":"src/main/java/duke/DukeExceptionHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"public class DukeExceptionHandler {","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" public static void handleEmptyInput() {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" Input a task my brother.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public static void handleUnseenInput() {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" I\u0027m sorry brother, I do not have a Scooby :-(\");","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public static void printErrorMsg(String s) {","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" \" + s);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" public static void handleTaskNumOutOfBounds(int taskNum) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" ui.formatString(\" There is no task \" + taskNum + \", friend.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"tjch-o":30}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"public class Parser {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private Storage storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" public Parser(Storage storage, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.storage \u003d storage;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" * Method that handles input with the command \"mark\" or \"unmark\".","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" * @param command the command that the user inputs: either \"mark\" or \"unmark\"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" * @param input what the user inputs ","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * @return the task number that the user wants to mark or unmark","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" public static int getTaskNumber(String command, String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" String taskNum \u003d input.replace(command + \" \", \"\");","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" // remove leading and trailing whitespaces","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" String trimmedTaskNum \u003d taskNum.trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" return Integer.valueOf(trimmedTaskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public boolean parse(String input) {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" int n \u003d this.taskList.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" boolean toBreak \u003d false;","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" toBreak \u003d true;","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" } else if (input.equals(\"\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleEmptyInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" this.taskList.displayList();","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"unmark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" // mark is in the word unmark so this case has to go first","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"unmark\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" this.taskList.markTaskAsUndone(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"mark\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"mark\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" this.taskList.markTaskAsDone(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"todo\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" ToDo newToDo \u003d new ToDo(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newToDo, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newToDo, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"deadline\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" Deadline newDeadline \u003d new Deadline(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newDeadline, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newDeadline, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"event\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" Event newEvent \u003d new Event(input);","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" this.storage.saveWhenAddTask(newEvent, this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" this.ui.printAddedTask(newEvent, n + 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.printErrorMsg(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" } else if (input.contains(\"delete\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"delete\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" Task task \u003d taskList.deleteTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" this.storage.saveFile(this.taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" this.ui.printDeletedTask(task, n - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d getTaskNumber(\"delete\", input);","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleUnseenInput();","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" return toBreak;","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":92}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"import duke.task.Deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"import duke.task.Event;","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"import duke.task.ToDo;","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"public class Storage {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" private String filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" private String directoryPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public Storage(String filePath, String directoryPath) {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" this.directoryPath \u003d directoryPath;","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * Adds task into task list and triggers a save to the text file when the user adds a task.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * @param task the task to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" * @param taskList the task list containing the task to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" public void saveWhenAddTask(Task task, TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" this.saveFile(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" * Loads the file from the data folder if it exists, else it creates a new file for users to ","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" * store their tasks.","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" * @returns TaskList a TaskList object containing the tasks from the file","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" * @throws IOException if there is an error creating the file ","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" public TaskList loadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" File directory \u003d new File(this.directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" File newFile \u003d new File(this.filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" // check if directory exists","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" if (!directory.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" directory.mkdirs();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" // check if file exists","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" if (!newFile.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" newFile.createNewFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" System.out.println(\"created a new file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" return new TaskList(); ","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" Scanner scanner \u003d new Scanner(newFile);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2];","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new ToDo(\"todo \" + task);","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" String deadline \u003d parts[3].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new Deadline(task, deadline);","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask); ","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" String status \u003d parts[1].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" String task \u003d parts[2].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" String from \u003d parts[3].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" String to \u003d parts[4].trim();","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" Task newTask \u003d new Event(task, from, to);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" taskList.updateTaskStatusFromFile(newTask, status);","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(newTask);","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":" scanner.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" return taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" System.out.println(\"Error creating file\");","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"tjch-o"},"content":" return new TaskList();","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"tjch-o"},"content":" * Saves the tasks in the task list to the text file.","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"tjch-o"},"content":" * @param taskList the task list containing the tasks to be saved","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"tjch-o"},"content":" * @throws IOException if there is an error writing to the file","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"tjch-o"},"content":" public void saveFile(TaskList taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"tjch-o"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"tjch-o"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath);","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"tjch-o"},"content":" BufferedWriter bufferedWriter \u003d new BufferedWriter(fileWriter);","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"tjch-o"},"content":" int n \u003d taskList.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c n; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"tjch-o"},"content":" Task currentTask \u003d taskList.getTask(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":116,"author":{"gitId":"tjch-o"},"content":" String s \u003d currentTask.stringToSave();","lastModifiedDate":"2023-08-27"},{"lineNumber":117,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.write(s);","lastModifiedDate":"2023-08-27"},{"lineNumber":118,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.newLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":119,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":120,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":121,"author":{"gitId":"tjch-o"},"content":" bufferedWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":122,"author":{"gitId":"tjch-o"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":123,"author":{"gitId":"tjch-o"},"content":" e.printStackTrace();","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":126,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":126}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"public class TaskList {","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" private Ui ui;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public TaskList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" this.taskList.add(task);","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" public Task deleteTask(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" Task deletedTask \u003d this.taskList.remove(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" return deletedTask;","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" public Task getTask(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" return this.taskList.get(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" public int getSize() {","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" public void updateTaskStatusFromFile(Task task, String status) {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" if (status.equals(\"[X]\")) {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" } else {","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" public void markTaskAsDone(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" if (taskNum \u003c\u003d 0 || taskNum \u003e this.taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" Task task \u003d this.getTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" task.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" public void markTaskAsUndone(int taskNum) {","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" if (taskNum \u003c\u003d 0 || taskNum \u003e taskList.size()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" DukeExceptionHandler.handleTaskNumOutOfBounds(taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" return;","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" Task task \u003d this.getTask(taskNum - 1);","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" task.markAsUndone();","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" * Method that prints every task in the task list.","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" public void displayList() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" int n \u003d this.getSize();","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" this.ui.formatString(\" Here are the tasks in your list:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c n; i +\u003d 1) {","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" Task currentTask \u003d taskList.get(i);","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" String output \u003d \" \" + (i + 1) + \". \" + currentTask.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" ui.formatString(output);","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" this.ui.showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":87}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import duke.task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Ui {","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private String divider \u003d \"____________________________________________________________\";","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private String indent \u003d \" \";","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" * Adds indentation to the string given and prints it out.","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" * @params s the string to be indented","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" public void formatString(String s) {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" System.out.println(indent + s);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void showLine() {","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" formatString(divider);","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" public void greet() {","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" String chatbotName \u003d \"Miles\";","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" formatString(\" Hey! I\u0027m \" + chatbotName + \"!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" formatString(\" What can I do for you, my friend?\");","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" public void printAddedTask(Task task, int n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" formatString(\" Gotcha. I\u0027ve added this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" formatString(\" Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" public void printDeletedTask(Task task, int n) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" formatString(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" formatString(\" \" + task.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" formatString(\" Now you have \" + n + \" tasks in the list.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" public void exit() {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" formatString(\" Stay safe my friend. See you again soon man.\");","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" showLine();","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":51}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" // private String deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"OOPS!!! The description of a deadline cannot be empty.\";","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public Deadline(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" super(getTask(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" this.deadline \u003d this.convertToDateTime(this.getDeadline(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" public Deadline(String task, String deadline) {","lastModifiedDate":"2023-08-26"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" super(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" this.deadline \u003d this.convertToDateTime(deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" * Returns an array of 2 elements, the first element is the task, the second is the deadline. ","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" * Worth noting that the task and deadline strings here still have whitespaces that need to be","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" * trimmed for use.","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task and deadline","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * @return an array of 2 strings","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" public static String[] splitDeadlineString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"deadline\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" // removes \"deadline \" from the task string","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" String removeCmd \u003d taskString.substring(9);","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(removeCmd)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" // we know the array has 2 elements ","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d removeCmd.split(\"/by\");","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" if (arr.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid deadline format: missing /by\");","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" return arr;","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" * Returns the task from a input string that starts with \"deadline\".","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"deadline\"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" * @return the task","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" public static String getTask(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitDeadlineString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" String task \u003d arr[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(task)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" // we remove the white space behind the task","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" return task.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" * Returns the deadline from a input string that starts with \"deadline\".","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"deadline\"","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" * @return the deadline","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" public String getDeadline(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitDeadlineString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" String deadline \u003d arr[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(deadline)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The deadline of a deadline cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" // remove the whitespace in front ","lastModifiedDate":"2023-08-20"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" return deadline.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" public String displayDeadline() {","lastModifiedDate":"2023-08-26"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" public String saveDeadline() {","lastModifiedDate":"2023-08-26"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.deadline);","lastModifiedDate":"2023-08-26"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" return \"D\" + super.stringToSave() + \" | \" + this.saveDeadline(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.displayDeadline() + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":97}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public Event(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" // this is for creating a task with the \"event\" command","lastModifiedDate":"2023-08-26"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" super(getTask(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" this.startTime \u003d this.convertToDateTime(this.getStartTime(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.endTime \u003d this.convertToDateTime(getEndTime(task));","lastModifiedDate":"2023-08-26"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" public Event(String task, String startTime, String endTime) {","lastModifiedDate":"2023-08-26"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" // this is for loading the file","lastModifiedDate":"2023-08-26"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" super(task);","lastModifiedDate":"2023-08-26"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" this.startTime \u003d this.convertToDateTime(startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" this.endTime \u003d this.convertToDateTime(endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" * Returns an array of 3 elements, the first element is the task, the second is the start time,","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" * the third is the end time. Worth noting that the task, start time and end time strings here ","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" * still have whitespaces that need to be trimmed for use.","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task, start time and end time","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" * @return an array of 3 strings","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" public static String[] splitEventString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"event\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" String removeCmd \u003d taskString.substring(6);","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(removeCmd)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" String[] arr1 \u003d removeCmd.split(\"/from\");","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" if (arr1.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid event format: missing /from\");","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" } ","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(arr1[0])) {","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" // we still need to split the 2nd element because it contains both the start and end time","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" String secondPart \u003d arr1[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" String[] arr2 \u003d secondPart.split(\"/to\");","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" if (arr2.length \u003d\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"Invalid event format: missing /to\");","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" String[] output \u003d {arr1[0], arr2[0], arr2[1]};","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" return output;","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" * Returns the task from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" * @return the task","lastModifiedDate":"2023-08-20"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" public static String getTask(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String task \u003d arr[0];","lastModifiedDate":"2023-08-20"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(task)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" // remove the whitespace in front ","lastModifiedDate":"2023-08-20"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" return task.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" * Returns the start time from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" * @return the start time","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" public String getStartTime(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" String startTime \u003d arr[1];","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(startTime)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The start time of a event cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":91,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":93,"author":{"gitId":"tjch-o"},"content":" return startTime.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":95,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":96,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":97,"author":{"gitId":"tjch-o"},"content":" * Returns the end time from a input string that starts with \"event\".","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"tjch-o"},"content":" * @param taskString the input string that starts with \"event\"","lastModifiedDate":"2023-08-20"},{"lineNumber":100,"author":{"gitId":"tjch-o"},"content":" * @return the end time","lastModifiedDate":"2023-08-20"},{"lineNumber":101,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":102,"author":{"gitId":"tjch-o"},"content":" public String getEndTime(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d splitEventString(taskString);","lastModifiedDate":"2023-08-20"},{"lineNumber":104,"author":{"gitId":"tjch-o"},"content":" String endTime \u003d arr[2];","lastModifiedDate":"2023-08-20"},{"lineNumber":105,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(endTime)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(\"OOPS!!! The end time of a event cannot be empty.\");","lastModifiedDate":"2023-08-26"},{"lineNumber":108,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"tjch-o"},"content":" return endTime.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":111,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":112,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":113,"author":{"gitId":"tjch-o"},"content":" public String displayStartTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":114,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":115,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":116,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":117,"author":{"gitId":"tjch-o"},"content":" public String saveStartTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":118,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.startTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":119,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":120,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":121,"author":{"gitId":"tjch-o"},"content":" public String displayEndTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":122,"author":{"gitId":"tjch-o"},"content":" return this.displayTime(this.endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":123,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":124,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":125,"author":{"gitId":"tjch-o"},"content":" public String saveEndTime() {","lastModifiedDate":"2023-08-26"},{"lineNumber":126,"author":{"gitId":"tjch-o"},"content":" return this.saveTime(this.endTime);","lastModifiedDate":"2023-08-26"},{"lineNumber":127,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":128,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":129,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":130,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":131,"author":{"gitId":"tjch-o"},"content":" return \"E\" + super.stringToSave() + \" | \" + this.saveStartTime() + \" | \" + ","lastModifiedDate":"2023-08-26"},{"lineNumber":132,"author":{"gitId":"tjch-o"},"content":" this.saveEndTime(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":133,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":134,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":135,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":136,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":137,"author":{"gitId":"tjch-o"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.displayStartTime() + \" to: \" + ","lastModifiedDate":"2023-08-26"},{"lineNumber":138,"author":{"gitId":"tjch-o"},"content":" this.displayEndTime() + \")\";","lastModifiedDate":"2023-08-26"},{"lineNumber":139,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":140,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":140}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"/*","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" * Abstract class that represents a general task.","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-08-26"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-26"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" private boolean isDone;","lastModifiedDate":"2023-08-19"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" private String task;","lastModifiedDate":"2023-08-19"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" public Task(String task) {","lastModifiedDate":"2023-08-19"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" this.task \u003d task;","lastModifiedDate":"2023-08-19"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-19"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-19"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-19"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-19"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" public static boolean checkTaskNoDescription(String taskType, String task) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" return taskType.equals(task);","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" public static boolean checkAllWhiteSpace(String s) {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" for (int i \u003d 0; i \u003c s.length(); i +\u003d 1) {","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" if (s.charAt(i) !\u003d \u0027 \u0027) {","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" return false;","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" return true;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-26"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" return \" | \" + status + \" | \" + task;","lastModifiedDate":"2023-08-26"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" /**","lastModifiedDate":"2023-08-26"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" * Converts a string to a LocalDateTime object. This is for the deadline and event classes.","lastModifiedDate":"2023-08-26"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-26"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" * @param s the string inputted by the user in the format \"2019-10-15 1800\"","lastModifiedDate":"2023-08-26"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" * @return LocalDateTime object","lastModifiedDate":"2023-08-26"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-26"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" public LocalDateTime convertToDateTime(String s) {","lastModifiedDate":"2023-08-26"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" return LocalDateTime.parse(s, formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" public String saveTime(LocalDateTime time) {","lastModifiedDate":"2023-08-26"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" return time.format(formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":" public String displayTime(LocalDateTime time) {","lastModifiedDate":"2023-08-26"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2023-08-26"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" return time.format(formatter);","lastModifiedDate":"2023-08-26"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-19"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-19"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2023-08-19"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" return status + \" \" + task;","lastModifiedDate":"2023-08-19"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-19"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-19"}],"authorContributionMap":{"tjch-o":69}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-20"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":" private static String noDescErrorMsg \u003d \"\\u2639 OOPS!!! The description of a todo cannot be empty.\";","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":" public ToDo(String task) {","lastModifiedDate":"2023-08-20"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":" super(formatToDoString(task));","lastModifiedDate":"2023-08-20"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" /*","lastModifiedDate":"2023-08-20"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" * Formats the task string by slicing it to remove the \"todo \" part.","lastModifiedDate":"2023-08-20"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" * ","lastModifiedDate":"2023-08-20"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" * @param taskString the string that contains the task","lastModifiedDate":"2023-08-20"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" * @return the clean version of the task string","lastModifiedDate":"2023-08-20"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public static String formatToDoString(String taskString) {","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" if (checkTaskNoDescription(taskString, \"todo\")) {","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" String output \u003d taskString.substring(5);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" if (checkAllWhiteSpace(output)) {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" throw new IllegalArgumentException(noDescErrorMsg);","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" return output.trim();","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-26"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" public String stringToSave() {","lastModifiedDate":"2023-08-26"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" return \"T\" + super.stringToSave(); ","lastModifiedDate":"2023-08-26"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-26"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-26"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" @Override","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" public String toString() {","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":37}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"public class ParserTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" public void testGetTaskNumberMark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d Parser.getTaskNumber(\"mark\", \"mark 1\");","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" assertEquals(1, taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" public void testGetTaskNumberUnmark() {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" int taskNum \u003d Parser.getTaskNumber(\"unmark\", \"unmark 100\");","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" assertEquals(100, taskNum);","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":19}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import duke.task.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"public class StorageTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" public void testLoadFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" String directoryPath \u003d \"./data\";","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" String filePath \u003d \"./data/test1.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" Storage storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d storage.loadFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":" assertEquals(3, taskList.getSize());","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" Task task1 \u003d taskList.getTask(0);","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" Task task1Expected \u003d new Deadline(\"deadline buy soju /by 2023-08-26 2300\");","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":" assertEquals(task1.toString(), task1Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" Task task2 \u003d taskList.getTask(1);","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" Task task2Expected \u003d new Event(\"event orbital splashdown /from 2023-08-30 1700 /to 2023-08-30 1930\");","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" task2Expected.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":" assertEquals(task2.toString(), task2Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" Task task3 \u003d taskList.getTask(2);","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" Task task3Expected \u003d new ToDo (\"todo eat mcgriddles\");","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" assertEquals(task3.toString(), task3Expected.toString());","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" public void emptyFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":" String directoryPath \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" String filePath \u003d \"\";","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" Storage storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d storage.loadFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" assertEquals(0, taskList.getSize());","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" public void testSaveFile() {","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" String directoryPath \u003d \"./data\";","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":" String filePath \u003d \"./data/test2.txt\";","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" Storage storage \u003d new Storage(filePath, directoryPath);","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" TaskList taskList \u003d storage.loadFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":" Task task1 \u003d new Deadline(\"deadline buy soju /by 2023-08-26 2300\");","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" taskList.addTask(task1);","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" storage.saveFile(taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" TaskList taskList2 \u003d storage.loadFile();","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" assertEquals(1, taskList2.getSize());","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" assertEquals(task1.toString(), taskList2.getTask(0).toString());","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" taskList2.deleteTask(0);","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" storage.saveFile(taskList2);","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":58}},{"path":"src/test/java/duke/task/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"package duke.task;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"public class EventTest {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":" public void testSplitEventString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":" String[] arr \u003d Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"project meeting\", arr[0].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"2019-10-15 1800\", arr[1].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":" assertEquals(\"2019-10-15 2000\", arr[2].trim());","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":" public void emptyEvent() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event\";","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg); ","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"tjch-o"},"content":" public void missingDescription() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event /from 2019-10-15 1800 /to\";","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"OOPS!!! The description of a event cannot be empty.\";","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"tjch-o"},"content":" @Test ","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"tjch-o"},"content":" public void missingFrom() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"Invalid event format: missing /from\";","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"tjch-o"},"content":" public void missingTo() throws IllegalArgumentException {","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800\";","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"tjch-o"},"content":" IllegalArgumentException expectedException \u003d assertThrows(IllegalArgumentException.class, ","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"tjch-o"},"content":" () -\u003e {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"tjch-o"},"content":" Event.splitEventString(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"tjch-o"},"content":" });","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"tjch-o"},"content":" ","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"tjch-o"},"content":" String expectedErrorMsg \u003d \"Invalid event format: missing /to\";","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"tjch-o"},"content":" String actualErrorMsg \u003d expectedException.getMessage();","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"tjch-o"},"content":" assertEquals(expectedErrorMsg, actualErrorMsg);","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"tjch-o"},"content":" public void testStringToSave() {","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"tjch-o"},"content":" Event event \u003d new Event(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"tjch-o"},"content":" String expected \u003d \"E | [ ] | project meeting | 2019-10-15 1800 | 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"tjch-o"},"content":" assertEquals(expected, event.stringToSave());","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"tjch-o"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"tjch-o"},"content":" @Test","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"tjch-o"},"content":" public void testStringToSaveMarked() {","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"tjch-o"},"content":" String testString \u003d \"event project meeting /from 2019-10-15 1800 /to 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"tjch-o"},"content":" Event event \u003d new Event(testString);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"tjch-o"},"content":" event.markAsDone();","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"tjch-o"},"content":" String expected \u003d \"E | [X] | project meeting | 2019-10-15 1800 | 2019-10-15 2000\";","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"tjch-o"},"content":" assertEquals(expected, event.stringToSave());","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"tjch-o"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"tjch-o"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"tjch-o":90}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tjch-o"},"content":"todo","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"tjch-o"},"content":"blah","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"tjch-o"},"content":"todo read book","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"tjch-o"},"content":"deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"tjch-o"},"content":"deadline return book by June 6th","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"tjch-o"},"content":"deadline /by June 6th","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"tjch-o"},"content":"deadline return book /by ","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"tjch-o"},"content":"deadline return book /by June 6th","lastModifiedDate":"2023-08-20"},{"lineNumber":9,"author":{"gitId":"tjch-o"},"content":"event","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"tjch-o"},"content":"event project meeting from Aug 6th 2pm to 4pm","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"tjch-o"},"content":"event /from Aug 6th 2pm /to 4pm ","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"tjch-o"},"content":"event project meeting /from Aug 6th 2pm","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"tjch-o"},"content":"event project meeting /to 4pm ","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"tjch-o"},"content":"event project meeting /from Aug 6th 2pm /to 4pm ","lastModifiedDate":"2023-08-20"},{"lineNumber":15,"author":{"gitId":"tjch-o"},"content":"todo join sports club","lastModifiedDate":"2023-08-20"},{"lineNumber":16,"author":{"gitId":"tjch-o"},"content":"todo borrow book","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"tjch-o"},"content":"mark 10","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"tjch-o"},"content":"unmark 10","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"tjch-o"},"content":"delete 10","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"tjch-o"},"content":"mark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"tjch-o"},"content":"unmark -1","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"tjch-o"},"content":"delete -1","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"tjch-o"},"content":"mark 1","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"tjch-o"},"content":"mark 2","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"tjch-o"},"content":"mark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"tjch-o"},"content":"mark 4","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"tjch-o"},"content":"unmark 3","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"tjch-o"},"content":"delete 3","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"tjch-o"},"content":"list","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"tjch-o"},"content":"bye","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"tjch-o":32}}] diff --git a/tjch-o_ip_master/commits.json b/tjch-o_ip_master/commits.json index f8b92807..9ef3fc0f 100644 --- a/tjch-o_ip_master/commits.json +++ b/tjch-o_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tjch-o":[{"date":"2023-08-19","commitResults":[{"hash":"d1f08fc059af8ddb4ae9541c0031c8f7fe5f203e","isMergeCommit":false,"messageTitle":"change chatbot name and add rename, greet, exit feature","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"92fdfeac5a690fa75923dbe8d1944b94bb787385","isMergeCommit":false,"messageTitle":"add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}},{"hash":"9bb786a442e3d73e26927ae147e257abe43a051a","isMergeCommit":false,"messageTitle":"implement add, list features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"a7f5644976c1cc72463d11133000aad46c610a1d","isMergeCommit":false,"messageTitle":"add mark as done and change status back to undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":26}}}]},{"date":"2023-08-20","commitResults":[{"hash":"4b9dbb36a1ef7f3ec60021933093af39ad0bf2cb","isMergeCommit":false,"messageTitle":"add ToDos, Events, Deadlines features","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":193,"deletions":16}}},{"hash":"dcbd798698e8ba1e1f279093a89352209e4b5212","isMergeCommit":false,"messageTitle":"add automated ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"0363e9b5f488bd13bb27acc2f26dc17f3917d474","isMergeCommit":false,"messageTitle":"add chatbot error handling ability for invalid user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":11}}},{"hash":"924901c44f2610f2b96063734f3f9820d1c0c6e6","isMergeCommit":false,"messageTitle":"add delete feature and improve on automated ui testing","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":2},"java":{"insertions":58,"deletions":12}}},{"hash":"ce7eb91523c2131aee7804504da90cddbb272ba6","isMergeCommit":false,"messageTitle":"added more comprehensive testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-26","commitResults":[{"hash":"f1c9c27340aefcf0d47ce4cea28fb26d1cf82b34","isMergeCommit":false,"messageTitle":"Implement save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":135,"deletions":10}}},{"hash":"1e9b01ba6f33f17433c7535dc6df7299fd95ed05","isMergeCommit":false,"messageTitle":"Add minor modifications to save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"719bf849c9cfb2ac04c607373954706717bbb87d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ec248daf378f11c0353d897ff07d6e177ec44ef6","isMergeCommit":false,"messageTitle":"Implement DateTime for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":13}}},{"hash":"94a270ada10c8053bb6f88a8b27e5d478081f51b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"30162453ec6ae0f3757f96b6e7d18219256bbf57","isMergeCommit":false,"messageTitle":"Refactor code to add more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":355,"deletions":272}}},{"hash":"3917d703f784aae04f5d219a38523b1a2af93b2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"d92b8e2ecafba8900288e4c64e418d5d557e3efa","isMergeCommit":false,"messageTitle":"Add packages and reorganise files into correct folders","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"b04cd222eeb7c5f7a78cb6704ddbd6fe863b8c9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"75ebb2457d9f750cc04695c2ce74766113d22383","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/tjch-o/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd8d397e4af9ad605dac0ae08cc5b71a92afdeb4","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3e6f307c305f6d81f790edc03f48d7cd8ddefca2","isMergeCommit":false,"messageTitle":"Add first method JUnit test for Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":1}}},{"hash":"8e63da48e01adc94ecbc6bc9b3a5cc6e37cd2800","isMergeCommit":false,"messageTitle":"Add JUnit tests for Storage class","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":72,"deletions":9}}},{"hash":"9eea0cd96d947a98e57982dd0343bdfb6772e012","isMergeCommit":false,"messageTitle":"Add more JUnit tests for Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"c7e9fe0a00e5141119149a8ef1833220e94b6e76","isMergeCommit":false,"messageTitle":"Add JUnit tests for Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"f646835b678d8f019d1f5091854a69e4ccb3de2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f78c750fa3053ae6200f40857f9802c0453f4da7","isMergeCommit":false,"messageTitle":"Update JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":12}}}]}]},"authorFileTypeContributionMap":{"tjch-o":{"java":904,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":32}},"authorContributionVariance":{"tjch-o":66224.89},"authorDisplayNameMap":{"tjch-o":"CS2103T-T09-1 CHOO.. JIE"}} +{"authorDailyContributionsMap":{"tjch-o":[{"date":"2023-08-19","commitResults":[{"hash":"d1f08fc059af8ddb4ae9541c0031c8f7fe5f203e","isMergeCommit":false,"messageTitle":"change chatbot name and add rename, greet, exit feature","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"92fdfeac5a690fa75923dbe8d1944b94bb787385","isMergeCommit":false,"messageTitle":"add echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":9}}},{"hash":"9bb786a442e3d73e26927ae147e257abe43a051a","isMergeCommit":false,"messageTitle":"implement add, list features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"a7f5644976c1cc72463d11133000aad46c610a1d","isMergeCommit":false,"messageTitle":"add mark as done and change status back to undone feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":26}}}]},{"date":"2023-08-20","commitResults":[{"hash":"4b9dbb36a1ef7f3ec60021933093af39ad0bf2cb","isMergeCommit":false,"messageTitle":"add ToDos, Events, Deadlines features","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":193,"deletions":16}}},{"hash":"dcbd798698e8ba1e1f279093a89352209e4b5212","isMergeCommit":false,"messageTitle":"add automated ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-21","commitResults":[{"hash":"0363e9b5f488bd13bb27acc2f26dc17f3917d474","isMergeCommit":false,"messageTitle":"add chatbot error handling ability for invalid user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":11}}},{"hash":"924901c44f2610f2b96063734f3f9820d1c0c6e6","isMergeCommit":false,"messageTitle":"add delete feature and improve on automated ui testing","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":20,"deletions":2},"java":{"insertions":58,"deletions":12}}},{"hash":"ce7eb91523c2131aee7804504da90cddbb272ba6","isMergeCommit":false,"messageTitle":"added more comprehensive testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":2,"deletions":2}}}]},{"date":"2023-08-26","commitResults":[{"hash":"f1c9c27340aefcf0d47ce4cea28fb26d1cf82b34","isMergeCommit":false,"messageTitle":"Implement save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":135,"deletions":10}}},{"hash":"1e9b01ba6f33f17433c7535dc6df7299fd95ed05","isMergeCommit":false,"messageTitle":"Add minor modifications to save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"719bf849c9cfb2ac04c607373954706717bbb87d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ec248daf378f11c0353d897ff07d6e177ec44ef6","isMergeCommit":false,"messageTitle":"Implement DateTime for deadlines and events","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":13}}},{"hash":"94a270ada10c8053bb6f88a8b27e5d478081f51b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"30162453ec6ae0f3757f96b6e7d18219256bbf57","isMergeCommit":false,"messageTitle":"Refactor code to add more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":355,"deletions":272}}},{"hash":"3917d703f784aae04f5d219a38523b1a2af93b2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"d92b8e2ecafba8900288e4c64e418d5d557e3efa","isMergeCommit":false,"messageTitle":"Add packages and reorganise files into correct folders","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":7}}},{"hash":"b04cd222eeb7c5f7a78cb6704ddbd6fe863b8c9c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"75ebb2457d9f750cc04695c2ce74766113d22383","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/tjch-o/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd8d397e4af9ad605dac0ae08cc5b71a92afdeb4","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"3e6f307c305f6d81f790edc03f48d7cd8ddefca2","isMergeCommit":false,"messageTitle":"Add first method JUnit test for Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":1}}},{"hash":"8e63da48e01adc94ecbc6bc9b3a5cc6e37cd2800","isMergeCommit":false,"messageTitle":"Add JUnit tests for Storage class","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":72,"deletions":9}}},{"hash":"9eea0cd96d947a98e57982dd0343bdfb6772e012","isMergeCommit":false,"messageTitle":"Add more JUnit tests for Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":3}}},{"hash":"c7e9fe0a00e5141119149a8ef1833220e94b6e76","isMergeCommit":false,"messageTitle":"Add JUnit tests for Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":0}}},{"hash":"f646835b678d8f019d1f5091854a69e4ccb3de2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"f78c750fa3053ae6200f40857f9802c0453f4da7","isMergeCommit":false,"messageTitle":"Update JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":12}}}]},{"date":"2023-08-28","commitResults":[{"hash":"e8b63121741cd2e249a46f1a3163514cd8632900","isMergeCommit":false,"messageTitle":"Fix directory cannot be found bug for the Storage JUnit test","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"tjch-o":{"java":928,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":32}},"authorContributionVariance":{"tjch-o":61944.45},"authorDisplayNameMap":{"tjch-o":"CS2103T-T09-1 CHOO.. JIE"}} diff --git a/wxwern_ip_master/authorship.json b/wxwern_ip_master/authorship.json index 3b3fcbbe..8a1cbfe8 100644 --- a/wxwern_ip_master/authorship.json +++ b/wxwern_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/ChatMessage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.time.Instant;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" * The read only instance for a single message.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"public class ChatMessage {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * The message sender for a conversation message","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" public enum SenderType {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" USER","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" private long timestamp;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" private SenderType senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" ChatMessage(SenderType senderType, String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" this.timestamp \u003d Instant.now().getEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" this.senderType \u003d senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" public long getTimestamp() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" return this.timestamp;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" public SenderType getSenderType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" return this.senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" return this.message;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":36}},{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * A chatbot to interact with. Provides methods to allow for users to easily","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" * interact with the bot and for UI clients to subscribe to chat messages.","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"public class Chatbot extends EventEmitter\u003cChatMessage\u003e {","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" /** The default name of the chatbot. */","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" public static String DEFAULT_NAME \u003d \"Todoify\";","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" private static Chatbot sharedInstance \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" * Returns the global singleton for the chatbot with the default name.","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * To start talking with it, call {@link Chatbot#openConversation()}.","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" public static Chatbot getSharedInstance() {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" if (sharedInstance \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" sharedInstance \u003d new Chatbot(Chatbot.DEFAULT_NAME);","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" return sharedInstance;","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" private String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" private ArrayList\u003cChatMessage\u003e convoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" private TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" private boolean closed \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" * Creates a new chatbot with the given custom name.","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" * To start talking with it, call {@link Chatbot#openConversation()}.","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" * @param name The name of the chatbot.","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" public Chatbot(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * Obtains an iterable representing the current full conversation.","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" * @return An iterable of messages for the current conversation in chronological order.","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" public Iterable\u003cChatMessage\u003e getConversation() {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" return convoList;","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" * Starts the chatbot conversation. Messages may be sent to the chatbot after this.","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" public void openConversation() {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" if (!this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" this.closed \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, String.format(\"Hello! I\u0027m %s!\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" * Ends the chatbot conversation. No new messages may be sent after this.","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" public void closeConversation() {","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" if (this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" this.closed \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Bye! Hope to see you again soon! ^-^\");","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" * Returns whether a conversation with the chatbot is open, which means messages can be sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" * @return true if the conversation is open, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" public boolean isConversationOpen() {","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" return !this.closed;","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" * Returns whether the conversation has clased, which means messages can no longer be sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" * @return true if the conversation is closed, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" public boolean isConversationClosed() {","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" return this.closed;","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" * Method to send a message to the chatbot from the user.","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" * @param message The message string to send.","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" * @return The resulting message sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" * @throws ChatbotRuntimeException if the conversation is closed.","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" public ChatMessage sendMessageFromUser(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" if (this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" throw new ChatbotRuntimeException(\"Conversations are not open, so no messages may be sent!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" return this.sendMessage(ChatMessage.SenderType.USER, message);","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" * Internal method to send a message.","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" * @param message The message to send.","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" * @return The resulting message sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" private ChatMessage sendMessage(ChatMessage.SenderType sender, String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" ChatMessage msg \u003d new ChatMessage(sender, message);","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" convoList.add(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" this.processMessage(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" return msg;","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" * Internal method to process newly received messages.","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" * @param message The message to process.","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" private void processMessage(ChatMessage message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" // Let\u0027s notify the listeners.","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" this.fireEvent(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" if (message.getSenderType() \u003d\u003d ChatMessage.SenderType.CHATBOT) {","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" // For now, self messages need no further processing.","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" // Let\u0027s see what the other users send!","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" final String FAILURE_MESSAGE_REPLY \u003d \"Sorry, idgi :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" final Command command \u003d Command.parse(message.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" switch (command.getOperation()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" case MarkComplete:","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" case UnmarkComplete:","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" case Delete:","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" if (command.getData() !\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" int index;","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" TaskManager.Task task;","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" // Process the input","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" index \u003d Integer.parseInt(command.getData()) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" \"The command \u0027%s\u0027 must be followed by a number representing the task number!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" command.getName()","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" task \u003d this.taskManager.getTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" \"There is no task in the list numbered %d!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" index + 1","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" // Let\u0027s see what we should do!","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" if (command.getOperation() \u003d\u003d Command.Operation.Delete) {","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" // Delete the task accordingly. We already checked the index so it should be correct.","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" this.taskManager.removeTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" // Send an appropriate reply.","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" \"Alright, I\u0027ve deleted this task:\\n %s\\nYou\u0027re left with %d tasks now! :)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" task,","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" this.taskManager.getTaskCount()","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" )","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" // Mark the task as done or not accordingly","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" boolean completed \u003d command.getOperation() \u003d\u003d Command.Operation.MarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" if (task.isCompleted() \u003d\u003d completed) {","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" completed ? \"The task was already done!\" : \"The task was already not done!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":" task.markCompleted(completed);","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" // Send an appropriate reply","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" if (completed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" String.format(\"Nice! I\u0027ve marked this task as done:\\n %s\", task.toString())","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" String.format(\"OK, I\u0027ve marked this task as not done yet:\\n %s\", task.toString())","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" case AddTodo:","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" case AddDeadline:","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" case AddEvent:","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" if (!command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" // Create the appropriate task","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" TaskManager.Task task \u003d null;","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" switch (command.getOperation()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" case AddTodo:","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Todo(command.getData());","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" case AddDeadline:","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":" if (!command.hasParamWithUsefulValue(\"by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" \"The \u0027deadline\u0027 command requires supplying \u0027/by \u003cdeadline\u003e\u0027!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" long byTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" byTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"by\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-27"},{"lineNumber":232,"author":{"gitId":"wxwern"},"content":" \"The deadline supplied is invalid! It must be a correct date and follow the \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":" \"ISO8601 date format (yyyy-MM-dd or yyyy-MM-ddThh:mm).\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":234,"author":{"gitId":"wxwern"},"content":" \"For example, 2023-01-31T12:34 is one such valid date.\"","lastModifiedDate":"2023-08-27"},{"lineNumber":235,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":237,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Deadline(","lastModifiedDate":"2023-08-23"},{"lineNumber":239,"author":{"gitId":"wxwern"},"content":" command.getData(),","lastModifiedDate":"2023-08-23"},{"lineNumber":240,"author":{"gitId":"wxwern"},"content":" byTimestamp","lastModifiedDate":"2023-08-27"},{"lineNumber":241,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":242,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":243,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":244,"author":{"gitId":"wxwern"},"content":" case AddEvent:","lastModifiedDate":"2023-08-23"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":" if (!command.hasParamWithUsefulValue(\"from\") ||","lastModifiedDate":"2023-08-23"},{"lineNumber":246,"author":{"gitId":"wxwern"},"content":" !command.hasParamWithUsefulValue(\"to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":247,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"wxwern"},"content":" \"The \u0027event\u0027 command requires supplying both \u0027/from \u003cdate\u003e\u0027 and \u0027/to \u003cdate\u003e\u0027!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":249,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":250,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":252,"author":{"gitId":"wxwern"},"content":" long startTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":253,"author":{"gitId":"wxwern"},"content":" long endTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":254,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":255,"author":{"gitId":"wxwern"},"content":" startTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"from\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":256,"author":{"gitId":"wxwern"},"content":" endTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":257,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":258,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-27"},{"lineNumber":259,"author":{"gitId":"wxwern"},"content":" \"The date range supplied is invalid! They must be correct dates and follow the \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":260,"author":{"gitId":"wxwern"},"content":" \"ISO8601 date format (yyyy-MM-dd or yyyy-MM-ddThh:mm:ss).\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":261,"author":{"gitId":"wxwern"},"content":" \"For example, 2023-01-31T12:34 is one such valid date.\"","lastModifiedDate":"2023-08-27"},{"lineNumber":262,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-27"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":264,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Event(","lastModifiedDate":"2023-08-23"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":" command.getData(),","lastModifiedDate":"2023-08-23"},{"lineNumber":267,"author":{"gitId":"wxwern"},"content":" startTimestamp,","lastModifiedDate":"2023-08-27"},{"lineNumber":268,"author":{"gitId":"wxwern"},"content":" endTimestamp","lastModifiedDate":"2023-08-27"},{"lineNumber":269,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":271,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":273,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(\"Unexpected internal error: task type was not implemented.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":276,"author":{"gitId":"wxwern"},"content":" // Add the task created","lastModifiedDate":"2023-08-23"},{"lineNumber":277,"author":{"gitId":"wxwern"},"content":" this.taskManager.addTask(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":279,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":280,"author":{"gitId":"wxwern"},"content":" String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":" \"Got it. I\u0027ve added this task:\\n %s\\nYou have %d tasks in your list now! :)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":" task,","lastModifiedDate":"2023-08-22"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":" this.taskManager.getTaskCount()","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":" )","lastModifiedDate":"2023-08-22"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":" \"The command \u0027%s\u0027 to create a task requires some title content, but none was found!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":" command.getName()","lastModifiedDate":"2023-08-23"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":292,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":293,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":294,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":" case List:","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":" if (command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-08-22"},{"lineNumber":298,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":299,"author":{"gitId":"wxwern"},"content":" if (this.taskManager.getTaskCount() \u003e 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":300,"author":{"gitId":"wxwern"},"content":" builder.append(\"Here are your tasks, glhf! :)\");","lastModifiedDate":"2023-08-22"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":" builder.append(\"Oh nice! You have no tasks! :\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":305,"author":{"gitId":"wxwern"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":306,"author":{"gitId":"wxwern"},"content":" for (TaskManager.Task task : this.taskManager.getTasks()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":307,"author":{"gitId":"wxwern"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2023-08-22"},{"lineNumber":308,"author":{"gitId":"wxwern"},"content":" builder.append(count);","lastModifiedDate":"2023-08-22"},{"lineNumber":309,"author":{"gitId":"wxwern"},"content":" builder.append(\". \");","lastModifiedDate":"2023-08-22"},{"lineNumber":310,"author":{"gitId":"wxwern"},"content":" builder.append(task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":311,"author":{"gitId":"wxwern"},"content":" count++;","lastModifiedDate":"2023-08-22"},{"lineNumber":312,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":313,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, builder.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":314,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":315,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":317,"author":{"gitId":"wxwern"},"content":" case Exit:","lastModifiedDate":"2023-08-23"},{"lineNumber":318,"author":{"gitId":"wxwern"},"content":" if (command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":319,"author":{"gitId":"wxwern"},"content":" this.closeConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":320,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":321,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":322,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":323,"author":{"gitId":"wxwern"},"content":" case Unknown:","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":325,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":326,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":327,"author":{"gitId":"wxwern"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Oops! \" + e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"wxwern"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":330,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Oh no, something unexpectedly went wrong! The internal error was: \" + e.getLocalizedMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":331,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":332,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":333,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":334,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":335,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":335}},{"path":"src/main/java/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"public class ChatbotException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" ChatbotException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":5}},{"path":"src/main/java/ChatbotRuntimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"public class ChatbotRuntimeException extends RuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" ChatbotRuntimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":5}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * An abstraction for a command.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" public enum Operation {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" AddTodo,","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" AddDeadline,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" AddEvent,","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" Delete,","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" MarkComplete,","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" UnmarkComplete,","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" List,","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" Exit,","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" Unknown","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" private String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" private String data;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" private Map\u003cString, String\u003e params \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Constructs a command with the given properties.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * @param name The name of the command. Cannot be null.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * @param data The data of the command. Cannot be null; supply empty string if no data.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param params The parameters of the command. May be null.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" public Command(String name, String data, Map\u003cString, String\u003e params) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" this.data \u003d data;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" if (params !\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" this.params.putAll(params);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" if (name \u003d\u003d null || data \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" throw new NullPointerException(\"Name and data of a command cannot be null.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" * Parses a string instruction as a command.","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" * This expects the format: \"commandName Some long data text, /key1 value1 /key2 value2\".","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * @param instruction The string instruction to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" * @return The resulting command.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" public static Command parse(String instruction) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" String[] parts \u003d instruction.trim().split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" // 1. The first space delimited component is our name","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" String name \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" // 2. Let\u0027s build our data component.","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" StringBuilder data \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" // Search up till next part with starting \"/\".","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" // That\u0027s our data. We mark the index onwards where","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" // the components are no longer data (so it is excluded).","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" int dataEndIndex \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" while (dataEndIndex \u003c parts.length) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" String part \u003d parts[dataEndIndex];","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" if (part.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" dataEndIndex++;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" // Merge the data components into a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 1; i \u003c dataEndIndex; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" if (i \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" data.append(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" data.append(parts[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" // 3. Now, we have our parameters. Let\u0027s do some fancy processing.","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" Map\u003cString, String\u003e params \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" // We scan through each word to iteratively add the key-value pairs.","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" String currParamKey \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" StringBuilder currParamValue \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" for (int i \u003d dataEndIndex; i \u003c parts.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" String part \u003d parts[i].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" if (part.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" // New key value pair.","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" // Check if old key exists, then add it if it does.","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" if (!currParamKey.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" params.put(currParamKey, currParamValue.toString().trim());","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" // Set the new key value pair.","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" currParamKey \u003d part;","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" currParamValue \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" currParamValue.append(parts[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" currParamValue.append(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" if (!currParamKey.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" params.put(currParamKey, currParamValue.toString().trim());","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" // 4. Now we are done! Construct and return the result.","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" return new Command(name, data.toString(), params);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" * Parses a string instruction\u0027s command name.","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" * This expects the format: \"commandName Some long data text, /key1 value1 /key2 value2\".","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * It only returns the commandName component, and does not attempt to read anything beyond that.","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" * @param instruction The string instruction to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" * @return The command name retrieved as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" public static String parseCommandName(String instruction) {","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" String[] parts \u003d instruction.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" return parts[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" * Obtains the name of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" * @return The name of the given command as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" * Obtains the operation of the given command by comparing the name against one of the standard operations.","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" * @return The operation of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" public Operation getOperation() {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" switch (this.name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" case \"todo\": return Operation.AddTodo;","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" case \"event\": return Operation.AddEvent;","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" case \"deadline\": return Operation.AddDeadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" case \"delete\": return Operation.Delete;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" case \"mark\": return Operation.MarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" case \"unmark\": return Operation.UnmarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" case \"list\": return Operation.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" case \"exit\":","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" return Operation.Exit;","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" return Operation.Unknown;","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" * Obtains the data of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" * @return The data of the given command as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" public String getData() {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" return this.data;","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" * Obtains the value of the given parameter in the command.","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" * @return The value of this param, or null if unset.","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" public String getParam(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" return this.params.get(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" * Checks whether the given parameter was initialised.","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" * @return `true` if it was initialised, `false` otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" public boolean hasParam(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" return this.params.containsKey(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" * Checks whether the given parameter has any *useful* value.","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" * @return `true` if it has any non-empty, non-whitespace value, `false` otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" public boolean hasParamWithUsefulValue(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" String value \u003d this.params.get(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" value \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" return !value.isBlank();","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":220}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" private static final Chatbot chatbot \u003d Chatbot.getSharedInstance();","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" // Perform some setups.","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" chatbot.addEventListener(message -\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" if (message.getSenderType() !\u003d ChatMessage.SenderType.USER) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" System.out.println(message.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" System.out.println();","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" });","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" // Start processing the conversation.","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" chatbot.openConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" while (chatbot.isConversationOpen()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" if (!scanner.hasNextLine()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" System.out.println();","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" chatbot.sendMessageFromUser(line);","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" chatbot.closeConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" scanner.close();","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wxwern":34,"-":4}},{"path":"src/main/java/EpochConverter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.time.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" * A custom formatter and converter to assist in formatting dates to and from the Unix epoch.","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"public class EpochConverter {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" * Converts the given date-time string to number representing seconds since the Unix epoch.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" * @param dateTimeString The date time string to convert, in ISO format of \"yyyy-MM-ddThh:mm:ss\".","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * @return The number of seconds since the Unix epoch of 1970-01-01 00:00:00 UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * @throws DateTimeParseException if the date-time cannot be parsed.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" public static long getEpochFromISODateString(String dateTimeString) throws DateTimeParseException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" DateTimeParseException cachedException;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" // Try with date and time.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_DATE_TIME)","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" .atZone(ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" .toEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" cachedException \u003d e;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" // Otherwise, try with date only.","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" return LocalDate.parse(dateTimeString, DateTimeFormatter.ISO_DATE)","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" .atStartOfDay()","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" .atZone(ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" .toEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" // Do nothing...","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" // Otherwise, give up.","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" throw cachedException;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * Converts seconds since the Unix epoch to a date-time string.","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" * @param epochSeconds The number of seconds since the Unix epoch of 1970-01-01 00:00:00 UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" * @return The resulting date time string in ISO format of \"yyyy-MM-ddThh:mm:ss\".","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public static String getISODateStringFromEpoch(long epochSeconds) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" return LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" .ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" .format(DateTimeFormatter.ISO_DATE_TIME);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" * Converts seconds since the Unix epoch to a user-readable date-time string.","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * @param epochSeconds The number of seconds since the Unix epoch of 1970-01-01, 00:00:00, UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * @return The resulting date time string in a user readable format.","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public static String getUserReadableStringFromEpoch(long epochSeconds) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" return LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" .ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" .format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT));","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wxwern":72}},{"path":"src/main/java/EventEmitter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * A class capable of emitting events to event listeners.","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class EventEmitter\u003cT\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" private List\u003cEventListener\u003c? super T\u003e\u003e eventListeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" * Fires a new event to all event listeners listening to this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * @param event The event to fire.","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" protected void fireEvent(T event) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" for (var l: eventListeners) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" l.eventFired(event);","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * Adds an event listener to listen to events by this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * @param listener The listener to add.","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public void addEventListener(EventListener\u003c? super T\u003e listener) {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" eventListeners.add(listener);","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Removes an event listener to remove it from listening to events by this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" * @param listener The listener to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" public void removeEventListener(EventListener\u003c? super T\u003e listener) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" eventListeners.remove(listener);","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":35}},{"path":"src/main/java/EventListener.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" * An interface capable of listening to certain events.","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" * @param \u003cT\u003e The type of the event.","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"@FunctionalInterface","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"public interface EventListener\u003cT\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * A method to process an event that has been fired.","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" * @param event Fired event.","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" void eventFired(T event);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":12}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * A class that manages a list of items aka \"tasks\".","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * A task that the task manager can keep in its task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" * This is an abstract class which should be inherited by custom task types.","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" * It contains basic properties for a task, which can be extended as needed.","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" public abstract static class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" private String title;","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" private boolean completed \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * Initializes a task.","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * @param title The title for the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" public Task(String title) {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" this.title \u003d title;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * Obtains the title for the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * @return The title of the task as a string.","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" public String getTitle() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" return this.title;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" * Whether the task is marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" * @return true if completed, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" public boolean isCompleted() {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" return this.completed;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * Marks the task as completed or incomplete.","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" * @param completed Whether to mark it as complete (true) or incomplete (false).","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public void markCompleted(boolean completed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" this.completed \u003d completed;","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * Internal method for a formatted mark-complete symbol for this task.","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" protected String getCompletedIndicatorString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return String.format(\"[%s]\", this.isCompleted() ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * Returns a string representation of the task, to be implemented by inherited classes.","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" * @return A string representing the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" * A trivial task that represents to-dos.","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * It has a title and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" public static class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" public Todo(String title) {","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" return String.format(\"\u003cT\u003e %s %s\", this.getCompletedIndicatorString(), this.getTitle());","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" * A deadline task. It tracks a title and a deadline associated","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" * with it, and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" private long deadline;","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" public Deadline(String title, long deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" * Obtains the deadline of this task.","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" * @return The deadline of this task as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" public long getDeadline() {","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" return this.deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" \"\u003cD\u003e %s %s (by: %s)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" this.getCompletedIndicatorString(),","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" this.getTitle(),","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getDeadline())","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" * An event task. It tracks a title and the range associated with the","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" * event (from date-time to date-time), and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" public static class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" private long startTimestamp; // TODO: Start times should not be a string.","lastModifiedDate":"2023-08-27"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" private long endTimestamp; // TODO: End times should not be a string.","lastModifiedDate":"2023-08-27"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" public Event(String title, long startTimestamp, long endTimestamp) {","lastModifiedDate":"2023-08-27"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" this.startTimestamp \u003d startTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" this.endTimestamp \u003d endTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" * Obtains the starting timestamp of this event task.","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" * @return The starting timestamp as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" public long getStartTimestamp() {","lastModifiedDate":"2023-08-27"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" return this.startTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" * Obtains the ending timestamp of this event task.","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" * @return The ending timestamp as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" public long getEndTimestamp() {","lastModifiedDate":"2023-08-27"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" return this.endTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" \"\u003cE\u003e %s %s (from: %s, to: %s)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" this.getCompletedIndicatorString(),","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" this.getTitle(),","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getStartTimestamp()),","lastModifiedDate":"2023-08-27"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getEndTimestamp())","lastModifiedDate":"2023-08-27"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" private List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" * Constructor for a task manager, managing a list of items representing \"tasks\".","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" public TaskManager() {","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" * Obtains the items as an iterable.","lastModifiedDate":"2023-08-22"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" * @return The iterable of list of items.","lastModifiedDate":"2023-08-22"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" public Iterable\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" return this.taskList;","lastModifiedDate":"2023-08-22"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" * Queries the number of items stored.","lastModifiedDate":"2023-08-22"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" * @return The number of items currently stored as an integer.","lastModifiedDate":"2023-08-22"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-22"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-22"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-22"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" * @return `true`, by definition of {@link List#add}","lastModifiedDate":"2023-08-22"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" return this.taskList.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" * Gets an task from the task list with the corresponding index.","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" * @param index The index to obtain.","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":" * @return The task in question at the specified index.","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" * @throws IndexOutOfBoundsException if the index is out of bounds.","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" * Removes the given task from the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" * @param task The task to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" * @return `true` if the task exists in the list and is successfully removed, `false` otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" public boolean removeTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" return this.taskList.remove(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":" * Removes the task at the corresponding index.","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" * @param index The index to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" * @return The task in question that was removed.","lastModifiedDate":"2023-08-22"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":" * @throws IndexOutOfBoundsException if the index is out of bounds.","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":" return this.taskList.remove(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":231}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"deadline return book /by 2023-06-06","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"event project meeting /from 2023-08-06T14:00 /to 2023-08-06T16:00","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"deadline ip week 2 /by 2024-08-24","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"deadline tp /by idk","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"deadline nonsense","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"event test /from 2030-01-01 /to 2040-12-31","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"event wrong /from /to","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"event missing","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"mark 6","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"unmark 6","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"mark 8","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"mark 8","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":34}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"java -Duser.language\u003den -Duser.country\u003dUS -classpath ..\\bin Duke \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":{"wxwern":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":"wxwern"},"content":"java -Duser.language\u003den -Duser.country\u003dUS -classpath ../bin Duke \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":{"wxwern":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" implementation \u0027com.google.code.gson:gson:2.10.1\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"wxwern":1,"-":42}},{"path":"src/main/java/ChatMessage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.time.Instant;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" * The read only instance for a single message.","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"public class ChatMessage {","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * The message sender for a conversation message","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" public enum SenderType {","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" USER","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" private long timestamp;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" private SenderType senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" private String message;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" ChatMessage(SenderType senderType, String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" this.timestamp \u003d Instant.now().getEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" this.senderType \u003d senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" this.message \u003d message;","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" public long getTimestamp() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" return this.timestamp;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" public SenderType getSenderType() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" return this.senderType;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" public String getMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" return this.message;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":36}},{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" * A chatbot to interact with. Provides methods to allow for users to easily","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" * interact with the bot and for UI clients to subscribe to chat messages.","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"public class Chatbot extends EventEmitter\u003cChatMessage\u003e {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" /** The default name of the chatbot. */","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" public static String DEFAULT_NAME \u003d \"Todoify\";","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" private static Chatbot sharedInstance \u003d null;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * Returns the global singleton for the chatbot with the default name.","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * To start talking with it, call {@link Chatbot#openConversation()}.","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" public static Chatbot getSharedInstance() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" if (sharedInstance \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" sharedInstance \u003d new Chatbot(Chatbot.DEFAULT_NAME);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" return sharedInstance;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" private String name;","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" private ArrayList\u003cChatMessage\u003e convoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" private TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" private boolean closed \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" * Creates a new chatbot with the given custom name.","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" * To start talking with it, call {@link Chatbot#openConversation()}.","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" * @param name The name of the chatbot.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" public Chatbot(String name) {","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" * Obtains an iterable representing the current full conversation.","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * @return An iterable of messages for the current conversation in chronological order.","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" public Iterable\u003cChatMessage\u003e getConversation() {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" return convoList;","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" * Starts the chatbot conversation. Messages may be sent to the chatbot after this.","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" public void openConversation() {","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" if (!this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" this.closed \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" this.taskManager.loadFromStorage();","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" // Do nothing.","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, String.format(\"Hello! I\u0027m %s!\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * Ends the chatbot conversation. No new messages may be sent after this.","lastModifiedDate":"2023-08-22"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" public void closeConversation() {","lastModifiedDate":"2023-08-22"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" if (this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-22"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" this.closed \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Bye! Hope to see you again soon! ^-^\");","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" * Returns whether a conversation with the chatbot is open, which means messages can be sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" * @return true if the conversation is open, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" public boolean isConversationOpen() {","lastModifiedDate":"2023-08-22"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" return !this.closed;","lastModifiedDate":"2023-08-22"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" * Returns whether the conversation has clased, which means messages can no longer be sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" * @return true if the conversation is closed, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" public boolean isConversationClosed() {","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" return this.closed;","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" * Method to send a message to the chatbot from the user.","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" * @param message The message string to send.","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" * @return The resulting message sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" * @throws ChatbotRuntimeException if the conversation is closed.","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" public ChatMessage sendMessageFromUser(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" if (this.closed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" throw new ChatbotRuntimeException(\"Conversations are not open, so no messages may be sent!\");","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" return this.sendMessage(ChatMessage.SenderType.USER, message);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" * Internal method to send a message.","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" * @param message The message to send.","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" * @return The resulting message sent.","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" private ChatMessage sendMessage(ChatMessage.SenderType sender, String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" ChatMessage msg \u003d new ChatMessage(sender, message);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" convoList.add(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" this.processMessage(msg);","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" return msg;","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" * Internal method to process newly received messages.","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" * @param message The message to process.","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" private void processMessage(ChatMessage message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" // Let\u0027s notify the listeners.","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" this.fireEvent(message);","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" if (message.getSenderType() \u003d\u003d ChatMessage.SenderType.CHATBOT) {","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" // For now, self messages need no further processing.","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" return;","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" // Let\u0027s see what the other users send!","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" final String FAILURE_MESSAGE_REPLY \u003d \"Sorry, idgi :(\";","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" final Command command \u003d Command.parse(message.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" switch (command.getOperation()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" case MarkComplete:","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" case UnmarkComplete:","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" case Delete:","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" if (command.getData() !\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" int index;","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" TaskManager.Task task;","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" // Process the input","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" index \u003d Integer.parseInt(command.getData()) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" \"The command \u0027%s\u0027 must be followed by a number representing the task number!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" command.getName()","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":" task \u003d this.taskManager.getTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" \"There is no task in the list numbered %d!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" index + 1","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" // Let\u0027s see what we should do!","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" if (command.getOperation() \u003d\u003d Command.Operation.Delete) {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" // Delete the task accordingly. We already checked the index so it should be correct.","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" this.taskManager.removeTask(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" // Send an appropriate reply.","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" \"Alright, I\u0027ve deleted this task:\\n %s\\nYou\u0027re left with %d tasks now! :)\",","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" task,","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" this.taskManager.getTaskCount()","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" )","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" // Mark the task as done or not accordingly","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" boolean completed \u003d command.getOperation() \u003d\u003d Command.Operation.MarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" if (task.isCompleted() \u003d\u003d completed) {","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" completed ? \"The task was already done!\" : \"The task was already not done!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" task.markCompleted(completed);","lastModifiedDate":"2023-08-22"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" // Send an appropriate reply","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" if (completed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":" String.format(\"Nice! I\u0027ve marked this task as done:\\n %s\", task.toString())","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" String.format(\"OK, I\u0027ve marked this task as not done yet:\\n %s\", task.toString())","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" this.taskManager.saveToStorage();","lastModifiedDate":"2023-08-28"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" case AddTodo:","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" case AddDeadline:","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" case AddEvent:","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" if (!command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" // Create the appropriate task","lastModifiedDate":"2023-08-23"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" TaskManager.Task task \u003d null;","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" switch (command.getOperation()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":" case AddTodo:","lastModifiedDate":"2023-08-23"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Todo(command.getData());","lastModifiedDate":"2023-08-23"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" case AddDeadline:","lastModifiedDate":"2023-08-23"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":" if (!command.hasParamWithUsefulValue(\"by\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":232,"author":{"gitId":"wxwern"},"content":" \"The \u0027deadline\u0027 command requires supplying \u0027/by \u003cdeadline\u003e\u0027!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":234,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":235,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":" long byTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":237,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"wxwern"},"content":" byTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"by\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":239,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":240,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-27"},{"lineNumber":241,"author":{"gitId":"wxwern"},"content":" \"The deadline supplied is invalid! It must be a correct date and follow the \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":242,"author":{"gitId":"wxwern"},"content":" \"ISO8601 date format (yyyy-MM-dd or yyyy-MM-ddThh:mm).\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":243,"author":{"gitId":"wxwern"},"content":" \"For example, 2023-01-31T12:34 is one such valid date.\"","lastModifiedDate":"2023-08-27"},{"lineNumber":244,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-27"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":246,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":247,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Deadline(","lastModifiedDate":"2023-08-23"},{"lineNumber":248,"author":{"gitId":"wxwern"},"content":" command.getData(),","lastModifiedDate":"2023-08-23"},{"lineNumber":249,"author":{"gitId":"wxwern"},"content":" byTimestamp","lastModifiedDate":"2023-08-27"},{"lineNumber":250,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":251,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":252,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":253,"author":{"gitId":"wxwern"},"content":" case AddEvent:","lastModifiedDate":"2023-08-23"},{"lineNumber":254,"author":{"gitId":"wxwern"},"content":" if (!command.hasParamWithUsefulValue(\"from\") ||","lastModifiedDate":"2023-08-23"},{"lineNumber":255,"author":{"gitId":"wxwern"},"content":" !command.hasParamWithUsefulValue(\"to\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":256,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-23"},{"lineNumber":257,"author":{"gitId":"wxwern"},"content":" \"The \u0027event\u0027 command requires supplying both \u0027/from \u003cdate\u003e\u0027 and \u0027/to \u003cdate\u003e\u0027!\"","lastModifiedDate":"2023-08-23"},{"lineNumber":258,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":259,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":260,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":261,"author":{"gitId":"wxwern"},"content":" long startTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":262,"author":{"gitId":"wxwern"},"content":" long endTimestamp;","lastModifiedDate":"2023-08-27"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":264,"author":{"gitId":"wxwern"},"content":" startTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"from\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":" endTimestamp \u003d EpochConverter.getEpochFromISODateString(command.getParam(\"to\"));","lastModifiedDate":"2023-08-27"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":267,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(","lastModifiedDate":"2023-08-27"},{"lineNumber":268,"author":{"gitId":"wxwern"},"content":" \"The date range supplied is invalid! They must be correct dates and follow the \" +","lastModifiedDate":"2023-08-27"},{"lineNumber":269,"author":{"gitId":"wxwern"},"content":" \"ISO8601 date format (yyyy-MM-dd or yyyy-MM-ddThh:mm:ss).\\n\" +","lastModifiedDate":"2023-08-27"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":" \"For example, 2023-01-31T12:34 is one such valid date.\"","lastModifiedDate":"2023-08-27"},{"lineNumber":271,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-27"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":273,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":" task \u003d new TaskManager.Event(","lastModifiedDate":"2023-08-23"},{"lineNumber":275,"author":{"gitId":"wxwern"},"content":" command.getData(),","lastModifiedDate":"2023-08-23"},{"lineNumber":276,"author":{"gitId":"wxwern"},"content":" startTimestamp,","lastModifiedDate":"2023-08-27"},{"lineNumber":277,"author":{"gitId":"wxwern"},"content":" endTimestamp","lastModifiedDate":"2023-08-27"},{"lineNumber":278,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-23"},{"lineNumber":279,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":280,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-08-23"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(\"Unexpected internal error: task type was not implemented.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":" // Add the task created","lastModifiedDate":"2023-08-23"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":" this.taskManager.addTask(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-22"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-23"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":" String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":" \"Got it. I\u0027ve added this task:\\n %s\\nYou have %d tasks in your list now! :)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" task,","lastModifiedDate":"2023-08-22"},{"lineNumber":292,"author":{"gitId":"wxwern"},"content":" this.taskManager.getTaskCount()","lastModifiedDate":"2023-08-22"},{"lineNumber":293,"author":{"gitId":"wxwern"},"content":" )","lastModifiedDate":"2023-08-22"},{"lineNumber":294,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":298,"author":{"gitId":"wxwern"},"content":" \"The command \u0027%s\u0027 to create a task requires some title content, but none was found!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":299,"author":{"gitId":"wxwern"},"content":" command.getName()","lastModifiedDate":"2023-08-23"},{"lineNumber":300,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-23"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":" this.taskManager.saveToStorage();","lastModifiedDate":"2023-08-28"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":305,"author":{"gitId":"wxwern"},"content":" case List:","lastModifiedDate":"2023-08-23"},{"lineNumber":306,"author":{"gitId":"wxwern"},"content":" if (command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":307,"author":{"gitId":"wxwern"},"content":" StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2023-08-22"},{"lineNumber":308,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":309,"author":{"gitId":"wxwern"},"content":" if (this.taskManager.getTaskCount() \u003e 0) {","lastModifiedDate":"2023-08-22"},{"lineNumber":310,"author":{"gitId":"wxwern"},"content":" builder.append(\"Here are your tasks, glhf! :)\");","lastModifiedDate":"2023-08-22"},{"lineNumber":311,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-22"},{"lineNumber":312,"author":{"gitId":"wxwern"},"content":" builder.append(\"Oh nice! You have no tasks! :\u003e\");","lastModifiedDate":"2023-08-22"},{"lineNumber":313,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":314,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":315,"author":{"gitId":"wxwern"},"content":" int count \u003d 1;","lastModifiedDate":"2023-08-22"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":" for (TaskManager.Task task : this.taskManager.getTasks()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":317,"author":{"gitId":"wxwern"},"content":" builder.append(\"\\n\");","lastModifiedDate":"2023-08-22"},{"lineNumber":318,"author":{"gitId":"wxwern"},"content":" builder.append(count);","lastModifiedDate":"2023-08-22"},{"lineNumber":319,"author":{"gitId":"wxwern"},"content":" builder.append(\". \");","lastModifiedDate":"2023-08-22"},{"lineNumber":320,"author":{"gitId":"wxwern"},"content":" builder.append(task.toString());","lastModifiedDate":"2023-08-22"},{"lineNumber":321,"author":{"gitId":"wxwern"},"content":" count++;","lastModifiedDate":"2023-08-22"},{"lineNumber":322,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":323,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, builder.toString());","lastModifiedDate":"2023-08-23"},{"lineNumber":324,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":325,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":326,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":327,"author":{"gitId":"wxwern"},"content":" case Exit:","lastModifiedDate":"2023-08-23"},{"lineNumber":328,"author":{"gitId":"wxwern"},"content":" if (command.getData().isBlank()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":329,"author":{"gitId":"wxwern"},"content":" this.closeConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":330,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":331,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":332,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":333,"author":{"gitId":"wxwern"},"content":" case Unknown:","lastModifiedDate":"2023-08-23"},{"lineNumber":334,"author":{"gitId":"wxwern"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":335,"author":{"gitId":"wxwern"},"content":" throw new ChatbotException(FAILURE_MESSAGE_REPLY);","lastModifiedDate":"2023-08-23"},{"lineNumber":336,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":337,"author":{"gitId":"wxwern"},"content":" } catch (ChatbotException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":338,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Oops! \" + e.getMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":339,"author":{"gitId":"wxwern"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":" this.sendMessage(","lastModifiedDate":"2023-08-28"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" ChatMessage.SenderType.CHATBOT,","lastModifiedDate":"2023-08-28"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" \"Oops! I\u0027m having problems saving your data to storage. Your data may not be preserved. \" +","lastModifiedDate":"2023-08-28"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" e.getMessage()","lastModifiedDate":"2023-08-28"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-28"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":346,"author":{"gitId":"wxwern"},"content":" this.sendMessage(ChatMessage.SenderType.CHATBOT, \"Oh no, something unexpectedly went wrong! The internal error was: \" + e.getLocalizedMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":347,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":348,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":349,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":350,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":351,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":351}},{"path":"src/main/java/ChatbotException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"public class ChatbotException extends Exception {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" ChatbotException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":5}},{"path":"src/main/java/ChatbotRuntimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"public class ChatbotRuntimeException extends RuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" ChatbotRuntimeException(String message) {","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" super(message);","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":5}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * An abstraction for a command.","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class Command {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" public enum Operation {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" AddTodo,","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" AddDeadline,","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" AddEvent,","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" Delete,","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" MarkComplete,","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" UnmarkComplete,","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" List,","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" Exit,","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" Unknown","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" private String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" private String data;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" private Map\u003cString, String\u003e params \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Constructs a command with the given properties.","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" * @param name The name of the command. Cannot be null.","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * @param data The data of the command. Cannot be null; supply empty string if no data.","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * @param params The parameters of the command. May be null.","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" public Command(String name, String data, Map\u003cString, String\u003e params) {","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" this.data \u003d data;","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" if (params !\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" this.params.putAll(params);","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" if (name \u003d\u003d null || data \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" throw new NullPointerException(\"Name and data of a command cannot be null.\");","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" * Parses a string instruction as a command.","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" * This expects the format: \"commandName Some long data text, /key1 value1 /key2 value2\".","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * @param instruction The string instruction to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" * @return The resulting command.","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" public static Command parse(String instruction) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" String[] parts \u003d instruction.trim().split(\" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" // 1. The first space delimited component is our name","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" String name \u003d parts[0].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" // 2. Let\u0027s build our data component.","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" StringBuilder data \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" // Search up till next part with starting \"/\".","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" // That\u0027s our data. We mark the index onwards where","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" // the components are no longer data (so it is excluded).","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" int dataEndIndex \u003d 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" while (dataEndIndex \u003c parts.length) {","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" String part \u003d parts[dataEndIndex];","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" if (part.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" dataEndIndex++;","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" // Merge the data components into a string.","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" for (int i \u003d 1; i \u003c dataEndIndex; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" if (i \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" data.append(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" data.append(parts[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" // 3. Now, we have our parameters. Let\u0027s do some fancy processing.","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" Map\u003cString, String\u003e params \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" // We scan through each word to iteratively add the key-value pairs.","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" String currParamKey \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" StringBuilder currParamValue \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" for (int i \u003d dataEndIndex; i \u003c parts.length; i++) {","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" String part \u003d parts[i].trim();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" if (part.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" // New key value pair.","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" // Check if old key exists, then add it if it does.","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" if (!currParamKey.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" params.put(currParamKey, currParamValue.toString().trim());","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" // Set the new key value pair.","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" currParamKey \u003d part;","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" currParamValue \u003d new StringBuilder();","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" currParamValue.append(parts[i]);","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" currParamValue.append(\u0027 \u0027);","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" if (!currParamKey.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" params.put(currParamKey, currParamValue.toString().trim());","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" // 4. Now we are done! Construct and return the result.","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" return new Command(name, data.toString(), params);","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":" * Parses a string instruction\u0027s command name.","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" * This expects the format: \"commandName Some long data text, /key1 value1 /key2 value2\".","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" * It only returns the commandName component, and does not attempt to read anything beyond that.","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" * @param instruction The string instruction to parse.","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" * @return The command name retrieved as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" public static String parseCommandName(String instruction) {","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" String[] parts \u003d instruction.split(\" \", 2);","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" return parts[0];","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":" * Obtains the name of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" * @return The name of the given command as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" public String getName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" * Obtains the operation of the given command by comparing the name against one of the standard operations.","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":" * @return The operation of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" public Operation getOperation() {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" switch (this.name) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" case \"todo\": return Operation.AddTodo;","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" case \"event\": return Operation.AddEvent;","lastModifiedDate":"2023-08-23"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" case \"deadline\": return Operation.AddDeadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":" case \"delete\": return Operation.Delete;","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" case \"mark\": return Operation.MarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" case \"unmark\": return Operation.UnmarkComplete;","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" case \"list\": return Operation.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" case \"bye\":","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" case \"exit\":","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" return Operation.Exit;","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" return Operation.Unknown;","lastModifiedDate":"2023-08-23"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" * Obtains the data of the given command.","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" * @return The data of the given command as a non-null string.","lastModifiedDate":"2023-08-23"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" public String getData() {","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" return this.data;","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" * Obtains the value of the given parameter in the command.","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" * @return The value of this param, or null if unset.","lastModifiedDate":"2023-08-23"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" public String getParam(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" return this.params.get(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" * Checks whether the given parameter was initialised.","lastModifiedDate":"2023-08-23"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" * @return `true` if it was initialised, `false` otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" public boolean hasParam(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" return this.params.containsKey(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" * Checks whether the given parameter has any *useful* value.","lastModifiedDate":"2023-08-23"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" * @param key the parameter, also known as the key.","lastModifiedDate":"2023-08-23"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" * @return `true` if it has any non-empty, non-whitespace value, `false` otherwise.","lastModifiedDate":"2023-08-23"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" public boolean hasParamWithUsefulValue(String key) {","lastModifiedDate":"2023-08-23"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" if (!key.startsWith(\"/\")) {","lastModifiedDate":"2023-08-23"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":" key \u003d \"/\" + key;","lastModifiedDate":"2023-08-23"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" String value \u003d this.params.get(key);","lastModifiedDate":"2023-08-23"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" if (value \u003d\u003d null) {","lastModifiedDate":"2023-08-23"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" value \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" return !value.isBlank();","lastModifiedDate":"2023-08-23"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":220}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" private static final Chatbot chatbot \u003d Chatbot.getSharedInstance();","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" // Perform some setups.","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" chatbot.addEventListener(message -\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" if (message.getSenderType() !\u003d ChatMessage.SenderType.USER) {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" System.out.println(message.getMessage());","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" System.out.println();","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" });","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" // Start processing the conversation.","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" chatbot.openConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" while (chatbot.isConversationOpen()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" System.out.print(\"\u003e \");","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" if (!scanner.hasNextLine()) {","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" System.out.println();","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" chatbot.sendMessageFromUser(line);","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" chatbot.closeConversation();","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" scanner.close();","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"wxwern":34,"-":4}},{"path":"src/main/java/EpochConverter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.time.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import java.time.format.FormatStyle;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.util.HashMap;","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import java.util.Map;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" * A custom formatter and converter to assist in formatting dates to and from the Unix epoch.","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"public class EpochConverter {","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" * Converts the given date-time string to number representing seconds since the Unix epoch.","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" * @param dateTimeString The date time string to convert, in ISO format of \"yyyy-MM-ddThh:mm:ss\".","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * @return The number of seconds since the Unix epoch of 1970-01-01 00:00:00 UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * @throws DateTimeParseException if the date-time cannot be parsed.","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" public static long getEpochFromISODateString(String dateTimeString) throws DateTimeParseException {","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" DateTimeParseException cachedException;","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" // Try with date and time.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_DATE_TIME)","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" .atZone(ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" .toEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" cachedException \u003d e;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" // Otherwise, try with date only.","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" return LocalDate.parse(dateTimeString, DateTimeFormatter.ISO_DATE)","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" .atStartOfDay()","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" .atZone(ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" .toEpochSecond();","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" // Do nothing...","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" // Otherwise, give up.","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" throw cachedException;","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * Converts seconds since the Unix epoch to a date-time string.","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" * @param epochSeconds The number of seconds since the Unix epoch of 1970-01-01 00:00:00 UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" * @return The resulting date time string in ISO format of \"yyyy-MM-ddThh:mm:ss\".","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" public static String getISODateStringFromEpoch(long epochSeconds) {","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":" return LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" .ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" .format(DateTimeFormatter.ISO_DATE_TIME);","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" * Converts seconds since the Unix epoch to a user-readable date-time string.","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" * @param epochSeconds The number of seconds since the Unix epoch of 1970-01-01, 00:00:00, UTC.","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * @return The resulting date time string in a user readable format.","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" public static String getUserReadableStringFromEpoch(long epochSeconds) {","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" return LocalDateTime","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" .ofInstant(Instant.ofEpochSecond(epochSeconds), ZoneId.systemDefault())","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":" .format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT));","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wxwern":72}},{"path":"src/main/java/EventEmitter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":" * A class capable of emitting events to event listeners.","lastModifiedDate":"2023-08-22"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"public class EventEmitter\u003cT\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" private List\u003cEventListener\u003c? super T\u003e\u003e eventListeners \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" * Fires a new event to all event listeners listening to this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" * @param event The event to fire.","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" protected void fireEvent(T event) {","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" for (var l: eventListeners) {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" l.eventFired(event);","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * Adds an event listener to listen to events by this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * @param listener The listener to add.","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public void addEventListener(EventListener\u003c? super T\u003e listener) {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" eventListeners.add(listener);","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" * Removes an event listener to remove it from listening to events by this instance.","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" * @param listener The listener to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" public void removeEventListener(EventListener\u003c? super T\u003e listener) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" eventListeners.remove(listener);","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":35}},{"path":"src/main/java/EventListener.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":" * An interface capable of listening to certain events.","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":" * @param \u003cT\u003e The type of the event.","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"@FunctionalInterface","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"public interface EventListener\u003cT\u003e {","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":" * A method to process an event that has been fired.","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":" * @param event Fired event.","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" void eventFired(T event);","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":12}},{"path":"src/main/java/InternalStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import java.io.*;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":" * A class that manages the program\u0027s internal storage\u0027s read-write operations.","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"public class InternalStorage {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" private static final java.nio.file.Path BASE_JAVA_NIO_FILE_PATH \u003d java.nio.file.Path.of(\".\",\"todoifydata\");","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":" * A path wrapper that represents the path from the base directory of the program.","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" public static class Path {","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" String[] components;","lastModifiedDate":"2023-08-27"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" * Constructs a new path with path components representing the internal relative path","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * starting from the base directory.","lastModifiedDate":"2023-08-27"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-27"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" * All components are separated by path separators automatically, do not supply them.","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-27"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" * @param components The path components.","lastModifiedDate":"2023-08-27"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":" public Path(String... components) {","lastModifiedDate":"2023-08-27"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" this.components \u003d components;","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" * Returns a new path relative to the configured base directory, while removing the last","lastModifiedDate":"2023-08-27"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" * component in the path.","lastModifiedDate":"2023-08-27"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" * @return The path after removing the last path component.","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" public Path excludingLastComponent() {","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" // Create parent directories first.","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" String[] directoryComponents \u003d Arrays.copyOf(this.components, Math.max(0, this.components.length - 1));","lastModifiedDate":"2023-08-27"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" return new Path(directoryComponents);","lastModifiedDate":"2023-08-27"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":" * Returns the given path\u0027s full path relative to the configured base directory, as a","lastModifiedDate":"2023-08-27"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" * {@link java.nio.file.Path} instance.","lastModifiedDate":"2023-08-27"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" * @return The path for the given file as a {@link java.nio.file.Path} instance.","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public java.nio.file.Path toJavaNioFilePath() {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" return java.nio.file.Path.of(BASE_JAVA_NIO_FILE_PATH.toString(), this.components);","lastModifiedDate":"2023-08-27"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * Returns a new File instance constructed from this path.","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" public File toFile() {","lastModifiedDate":"2023-08-27"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" return this.toJavaNioFilePath().toFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-27"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-27"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" return this.toJavaNioFilePath().toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" * Saves the given String data into the given path, relative to the configured base directory.","lastModifiedDate":"2023-08-27"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @param path The path to save to.","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" * @param data The data to save in the file with.","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" * @throws IOException if the file cannot be written for any reason.","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" public static void saveTo(Path path, String data) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" // Auto-create directory if necessary.","lastModifiedDate":"2023-08-27"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" java.nio.file.Path nioPath \u003d path.excludingLastComponent().toJavaNioFilePath();","lastModifiedDate":"2023-08-27"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" Files.createDirectories(nioPath);","lastModifiedDate":"2023-08-27"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" // Write to the file.","lastModifiedDate":"2023-08-27"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":" File file \u003d path.toFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" FileWriter fileWriter \u003d new FileWriter(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" fileWriter.write(data);","lastModifiedDate":"2023-08-27"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" fileWriter.close();","lastModifiedDate":"2023-08-27"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" * Reads the string data from the given filename, relative to the configured base directory.","lastModifiedDate":"2023-08-27"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" * @param path The path to read from.","lastModifiedDate":"2023-08-27"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" * @return The resulting data read from the file.","lastModifiedDate":"2023-08-27"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" * @throws FileNotFoundException if the file does not exist.","lastModifiedDate":"2023-08-28"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" * @throws IOException if the file cannot be read for any reason.","lastModifiedDate":"2023-08-27"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":" public static String loadFrom(Path path) throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" // Reads from the file.","lastModifiedDate":"2023-08-27"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" File file \u003d path.toFile();","lastModifiedDate":"2023-08-27"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" FileReader fileReader \u003d new FileReader(file);","lastModifiedDate":"2023-08-27"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" BufferedReader bufferedReader \u003d new BufferedReader(fileReader);","lastModifiedDate":"2023-08-27"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2023-08-27"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" String line;","lastModifiedDate":"2023-08-27"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" while ((line \u003d bufferedReader.readLine()) !\u003d null) {","lastModifiedDate":"2023-08-27"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" stringBuilder.append(line);","lastModifiedDate":"2023-08-27"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":" return stringBuilder.toString();","lastModifiedDate":"2023-08-27"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"wxwern":115}},{"path":"src/main/java/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"import com.google.gson.*;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"/**","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":" * A class that manages a list of items aka \"tasks\".","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"public class TaskManager {","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":" * A task that the task manager can keep in its task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":" * This is an abstract class which should be inherited by custom task types.","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":" * It contains basic properties for a task, which can be extended as needed.","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":" * All subclasses must also ensure they conform to compatibility with GSON","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":" * and do not allow any null fields.","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":" public abstract static class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":" private String title;","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":" private boolean completed \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":" * Initializes a task.","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":" * @param title The title for the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":" public Task(String title) {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"wxwern"},"content":" this.title \u003d title;","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"wxwern"},"content":" * Obtains the title for the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"wxwern"},"content":" * @return The title of the task as a string.","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"wxwern"},"content":" public String getTitle() {","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"wxwern"},"content":" return this.title;","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"wxwern"},"content":" * Whether the task is marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"wxwern"},"content":" * @return true if completed, false otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"wxwern"},"content":" public boolean isCompleted() {","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"wxwern"},"content":" return this.completed;","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"wxwern"},"content":" * Marks the task as completed or incomplete.","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"wxwern"},"content":" * @param completed Whether to mark it as complete (true) or incomplete (false).","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"wxwern"},"content":" public void markCompleted(boolean completed) {","lastModifiedDate":"2023-08-22"},{"lineNumber":59,"author":{"gitId":"wxwern"},"content":" this.completed \u003d completed;","lastModifiedDate":"2023-08-22"},{"lineNumber":60,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":61,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"wxwern"},"content":" * Internal method for a formatted mark-complete symbol for this task.","lastModifiedDate":"2023-08-22"},{"lineNumber":64,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":65,"author":{"gitId":"wxwern"},"content":" protected String getCompletedIndicatorString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":66,"author":{"gitId":"wxwern"},"content":" return String.format(\"[%s]\", this.isCompleted() ? \"X\" : \" \");","lastModifiedDate":"2023-08-22"},{"lineNumber":67,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":68,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":69,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"wxwern"},"content":" * Asserts that this task\u0027s parameters are in a valid state, having correctly configured with no null values.","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"wxwern"},"content":" * @throws IllegalArgumentException if the object is incorrectly constructed with invalid, null parameters.","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"wxwern"},"content":" public void assertValidState() {","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"wxwern"},"content":" Field[] fields \u003d this.getClass().getDeclaredFields();","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"wxwern"},"content":" for (Field field: fields) {","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"wxwern"},"content":" if (field.get(this) \u003d\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":79,"author":{"gitId":"wxwern"},"content":" throw new IllegalArgumentException(String.format(","lastModifiedDate":"2023-08-28"},{"lineNumber":80,"author":{"gitId":"wxwern"},"content":" \"Tasks may not have null values, but %s is null.\", field.getName()","lastModifiedDate":"2023-08-28"},{"lineNumber":81,"author":{"gitId":"wxwern"},"content":" ));","lastModifiedDate":"2023-08-28"},{"lineNumber":82,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":83,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":84,"author":{"gitId":"wxwern"},"content":" } catch (IllegalAccessException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":85,"author":{"gitId":"wxwern"},"content":" // Do nothing.","lastModifiedDate":"2023-08-28"},{"lineNumber":86,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":87,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":88,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":89,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":90,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":91,"author":{"gitId":"wxwern"},"content":" * Returns a string representation of the task, to be implemented by inherited classes.","lastModifiedDate":"2023-08-22"},{"lineNumber":92,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":93,"author":{"gitId":"wxwern"},"content":" * @return A string representing the task.","lastModifiedDate":"2023-08-22"},{"lineNumber":94,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":95,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":96,"author":{"gitId":"wxwern"},"content":" public abstract String toString();","lastModifiedDate":"2023-08-22"},{"lineNumber":97,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":98,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":99,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":100,"author":{"gitId":"wxwern"},"content":" * A trivial task that represents to-dos.","lastModifiedDate":"2023-08-22"},{"lineNumber":101,"author":{"gitId":"wxwern"},"content":" * It has a title and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":102,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":103,"author":{"gitId":"wxwern"},"content":" public static class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":104,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":105,"author":{"gitId":"wxwern"},"content":" * Constructor for a To-do task.","lastModifiedDate":"2023-08-28"},{"lineNumber":106,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":107,"author":{"gitId":"wxwern"},"content":" * @param title The title of the to-do.","lastModifiedDate":"2023-08-28"},{"lineNumber":108,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":109,"author":{"gitId":"wxwern"},"content":" public Todo(String title) {","lastModifiedDate":"2023-08-22"},{"lineNumber":110,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":111,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":112,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":113,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":114,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":115,"author":{"gitId":"wxwern"},"content":" return String.format(\"\u003cT\u003e %s %s\", this.getCompletedIndicatorString(), this.getTitle());","lastModifiedDate":"2023-08-22"},{"lineNumber":116,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":117,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":119,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":120,"author":{"gitId":"wxwern"},"content":" * A deadline task. It tracks a title and a deadline associated","lastModifiedDate":"2023-08-22"},{"lineNumber":121,"author":{"gitId":"wxwern"},"content":" * with it, and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":122,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":123,"author":{"gitId":"wxwern"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":124,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":125,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":126,"author":{"gitId":"wxwern"},"content":" * Deadline timestamp of the event as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":127,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":128,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":129,"author":{"gitId":"wxwern"},"content":" * This is intentionally using the object instead of the primitive type","lastModifiedDate":"2023-08-28"},{"lineNumber":130,"author":{"gitId":"wxwern"},"content":" * to allow for Gson to set to null, flagging the value as missing.","lastModifiedDate":"2023-08-28"},{"lineNumber":131,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":132,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":133,"author":{"gitId":"wxwern"},"content":" private Long deadline;","lastModifiedDate":"2023-08-28"},{"lineNumber":134,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":136,"author":{"gitId":"wxwern"},"content":" * Constructor for a deadline task.","lastModifiedDate":"2023-08-28"},{"lineNumber":137,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":138,"author":{"gitId":"wxwern"},"content":" * @param title The title of the deadline.","lastModifiedDate":"2023-08-28"},{"lineNumber":139,"author":{"gitId":"wxwern"},"content":" * @param deadline The deadline, as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":140,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":141,"author":{"gitId":"wxwern"},"content":" public Deadline(String title, long deadline) {","lastModifiedDate":"2023-08-27"},{"lineNumber":142,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":143,"author":{"gitId":"wxwern"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":147,"author":{"gitId":"wxwern"},"content":" * Obtains the deadline of this task.","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"wxwern"},"content":" * @return The deadline of this task as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":149,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"wxwern"},"content":" public long getDeadline() {","lastModifiedDate":"2023-08-27"},{"lineNumber":151,"author":{"gitId":"wxwern"},"content":" return this.deadline;","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":154,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":155,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":156,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":157,"author":{"gitId":"wxwern"},"content":" \"\u003cD\u003e %s %s (by: %s)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"wxwern"},"content":" this.getCompletedIndicatorString(),","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"wxwern"},"content":" this.getTitle(),","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getDeadline())","lastModifiedDate":"2023-08-27"},{"lineNumber":161,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":164,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"wxwern"},"content":" * An event task. It tracks a title and the range associated with the","lastModifiedDate":"2023-08-22"},{"lineNumber":167,"author":{"gitId":"wxwern"},"content":" * event (from date-time to date-time), and can be marked as completed.","lastModifiedDate":"2023-08-22"},{"lineNumber":168,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":169,"author":{"gitId":"wxwern"},"content":" public static class Event extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":170,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":171,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":172,"author":{"gitId":"wxwern"},"content":" * Starting timestamp of the event as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":173,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":174,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":175,"author":{"gitId":"wxwern"},"content":" * This is intentionally using the object instead of the primitive type","lastModifiedDate":"2023-08-28"},{"lineNumber":176,"author":{"gitId":"wxwern"},"content":" * to allow for Gson to set to null, flagging the value as missing.","lastModifiedDate":"2023-08-28"},{"lineNumber":177,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":178,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":179,"author":{"gitId":"wxwern"},"content":" private Long startTimestamp;","lastModifiedDate":"2023-08-28"},{"lineNumber":180,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":181,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"wxwern"},"content":" * Ending timestamp of the event as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":184,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":185,"author":{"gitId":"wxwern"},"content":" * This is intentionally using the object instead of the primitive type","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"wxwern"},"content":" * to allow for Gson to set to null, flagging the value as missing.","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":188,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"wxwern"},"content":" private Long endTimestamp;","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":191,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":192,"author":{"gitId":"wxwern"},"content":" * Constructor for an Event task.","lastModifiedDate":"2023-08-28"},{"lineNumber":193,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":194,"author":{"gitId":"wxwern"},"content":" * @param title The title of the event.","lastModifiedDate":"2023-08-28"},{"lineNumber":195,"author":{"gitId":"wxwern"},"content":" * @param startTimestamp The start of the event as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"wxwern"},"content":" * @param endTimestamp The end of the event as Unix epoch in seconds.","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":198,"author":{"gitId":"wxwern"},"content":" public Event(String title, long startTimestamp, long endTimestamp) {","lastModifiedDate":"2023-08-27"},{"lineNumber":199,"author":{"gitId":"wxwern"},"content":" super(title);","lastModifiedDate":"2023-08-22"},{"lineNumber":200,"author":{"gitId":"wxwern"},"content":" this.startTimestamp \u003d startTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":201,"author":{"gitId":"wxwern"},"content":" this.endTimestamp \u003d endTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":202,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":203,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":204,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":205,"author":{"gitId":"wxwern"},"content":" * Obtains the starting timestamp of this event task.","lastModifiedDate":"2023-08-22"},{"lineNumber":206,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":207,"author":{"gitId":"wxwern"},"content":" * @return The starting timestamp as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":208,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":209,"author":{"gitId":"wxwern"},"content":" public long getStartTimestamp() {","lastModifiedDate":"2023-08-27"},{"lineNumber":210,"author":{"gitId":"wxwern"},"content":" return this.startTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":211,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":212,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":213,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":214,"author":{"gitId":"wxwern"},"content":" * Obtains the ending timestamp of this event task.","lastModifiedDate":"2023-08-22"},{"lineNumber":215,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":216,"author":{"gitId":"wxwern"},"content":" * @return The ending timestamp as seconds since Unix epoch (1970-01-01 00:00:00 UTC).","lastModifiedDate":"2023-08-27"},{"lineNumber":217,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":218,"author":{"gitId":"wxwern"},"content":" public long getEndTimestamp() {","lastModifiedDate":"2023-08-27"},{"lineNumber":219,"author":{"gitId":"wxwern"},"content":" return this.endTimestamp;","lastModifiedDate":"2023-08-22"},{"lineNumber":220,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":221,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":222,"author":{"gitId":"wxwern"},"content":" @Override","lastModifiedDate":"2023-08-22"},{"lineNumber":223,"author":{"gitId":"wxwern"},"content":" public String toString() {","lastModifiedDate":"2023-08-22"},{"lineNumber":224,"author":{"gitId":"wxwern"},"content":" return String.format(","lastModifiedDate":"2023-08-22"},{"lineNumber":225,"author":{"gitId":"wxwern"},"content":" \"\u003cE\u003e %s %s (from: %s, to: %s)\",","lastModifiedDate":"2023-08-22"},{"lineNumber":226,"author":{"gitId":"wxwern"},"content":" this.getCompletedIndicatorString(),","lastModifiedDate":"2023-08-22"},{"lineNumber":227,"author":{"gitId":"wxwern"},"content":" this.getTitle(),","lastModifiedDate":"2023-08-22"},{"lineNumber":228,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getStartTimestamp()),","lastModifiedDate":"2023-08-27"},{"lineNumber":229,"author":{"gitId":"wxwern"},"content":" EpochConverter.getUserReadableStringFromEpoch(this.getEndTimestamp())","lastModifiedDate":"2023-08-27"},{"lineNumber":230,"author":{"gitId":"wxwern"},"content":" );","lastModifiedDate":"2023-08-22"},{"lineNumber":231,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":232,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":233,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":234,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":235,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":236,"author":{"gitId":"wxwern"},"content":" private List\u003cTask\u003e taskList;","lastModifiedDate":"2023-08-22"},{"lineNumber":237,"author":{"gitId":"wxwern"},"content":" private InternalStorage.Path storageLocation;","lastModifiedDate":"2023-08-27"},{"lineNumber":238,"author":{"gitId":"wxwern"},"content":" private static final String DEFAULT_FILENAME \u003d \"tasks.json\";","lastModifiedDate":"2023-08-28"},{"lineNumber":239,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":240,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":241,"author":{"gitId":"wxwern"},"content":" * Constructor for a task manager, managing a list of items representing \"tasks\",","lastModifiedDate":"2023-08-27"},{"lineNumber":242,"author":{"gitId":"wxwern"},"content":" * with a custom storage location.","lastModifiedDate":"2023-08-27"},{"lineNumber":243,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":244,"author":{"gitId":"wxwern"},"content":" * @param storageLocation Path","lastModifiedDate":"2023-08-27"},{"lineNumber":245,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":246,"author":{"gitId":"wxwern"},"content":" public TaskManager(InternalStorage.Path storageLocation) {","lastModifiedDate":"2023-08-27"},{"lineNumber":247,"author":{"gitId":"wxwern"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-22"},{"lineNumber":248,"author":{"gitId":"wxwern"},"content":" this.storageLocation \u003d storageLocation;","lastModifiedDate":"2023-08-27"},{"lineNumber":249,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":250,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":251,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":252,"author":{"gitId":"wxwern"},"content":" * Constructor for a task manager, managing a list of items representing \"tasks\",","lastModifiedDate":"2023-08-27"},{"lineNumber":253,"author":{"gitId":"wxwern"},"content":" * with the default storage location.","lastModifiedDate":"2023-08-27"},{"lineNumber":254,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":255,"author":{"gitId":"wxwern"},"content":" public TaskManager() {","lastModifiedDate":"2023-08-27"},{"lineNumber":256,"author":{"gitId":"wxwern"},"content":" this(new InternalStorage.Path(DEFAULT_FILENAME));","lastModifiedDate":"2023-08-28"},{"lineNumber":257,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":258,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":259,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":260,"author":{"gitId":"wxwern"},"content":" * Obtains the items as an iterable.","lastModifiedDate":"2023-08-22"},{"lineNumber":261,"author":{"gitId":"wxwern"},"content":" * @return The iterable of list of items.","lastModifiedDate":"2023-08-22"},{"lineNumber":262,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":263,"author":{"gitId":"wxwern"},"content":" public Iterable\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-08-22"},{"lineNumber":264,"author":{"gitId":"wxwern"},"content":" return this.taskList;","lastModifiedDate":"2023-08-22"},{"lineNumber":265,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":266,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":267,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":268,"author":{"gitId":"wxwern"},"content":" * Queries the number of items stored.","lastModifiedDate":"2023-08-22"},{"lineNumber":269,"author":{"gitId":"wxwern"},"content":" * @return The number of items currently stored as an integer.","lastModifiedDate":"2023-08-22"},{"lineNumber":270,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":271,"author":{"gitId":"wxwern"},"content":" public int getTaskCount() {","lastModifiedDate":"2023-08-22"},{"lineNumber":272,"author":{"gitId":"wxwern"},"content":" return this.taskList.size();","lastModifiedDate":"2023-08-22"},{"lineNumber":273,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":274,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":275,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":276,"author":{"gitId":"wxwern"},"content":" * Adds a task to the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":277,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":278,"author":{"gitId":"wxwern"},"content":" * @param task The task to add.","lastModifiedDate":"2023-08-22"},{"lineNumber":279,"author":{"gitId":"wxwern"},"content":" * @return `true`, by definition of {@link List#add}","lastModifiedDate":"2023-08-22"},{"lineNumber":280,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":281,"author":{"gitId":"wxwern"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":282,"author":{"gitId":"wxwern"},"content":" return this.taskList.add(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":283,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":284,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":285,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":286,"author":{"gitId":"wxwern"},"content":" * Gets an task from the task list with the corresponding index.","lastModifiedDate":"2023-08-22"},{"lineNumber":287,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":288,"author":{"gitId":"wxwern"},"content":" * @param index The index to obtain.","lastModifiedDate":"2023-08-22"},{"lineNumber":289,"author":{"gitId":"wxwern"},"content":" * @return The task in question at the specified index.","lastModifiedDate":"2023-08-22"},{"lineNumber":290,"author":{"gitId":"wxwern"},"content":" * @throws IndexOutOfBoundsException if the index is out of bounds.","lastModifiedDate":"2023-08-22"},{"lineNumber":291,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":292,"author":{"gitId":"wxwern"},"content":" public Task getTask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":293,"author":{"gitId":"wxwern"},"content":" return this.taskList.get(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":294,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":295,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":296,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":297,"author":{"gitId":"wxwern"},"content":" * Removes the given task from the task list.","lastModifiedDate":"2023-08-22"},{"lineNumber":298,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":299,"author":{"gitId":"wxwern"},"content":" * @param task The task to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":300,"author":{"gitId":"wxwern"},"content":" * @return `true` if the task exists in the list and is successfully removed, `false` otherwise.","lastModifiedDate":"2023-08-22"},{"lineNumber":301,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":302,"author":{"gitId":"wxwern"},"content":" public boolean removeTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":303,"author":{"gitId":"wxwern"},"content":" return this.taskList.remove(task);","lastModifiedDate":"2023-08-22"},{"lineNumber":304,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":305,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":306,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-22"},{"lineNumber":307,"author":{"gitId":"wxwern"},"content":" * Removes the task at the corresponding index.","lastModifiedDate":"2023-08-22"},{"lineNumber":308,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-22"},{"lineNumber":309,"author":{"gitId":"wxwern"},"content":" * @param index The index to remove.","lastModifiedDate":"2023-08-22"},{"lineNumber":310,"author":{"gitId":"wxwern"},"content":" * @return The task in question that was removed.","lastModifiedDate":"2023-08-22"},{"lineNumber":311,"author":{"gitId":"wxwern"},"content":" * @throws IndexOutOfBoundsException if the index is out of bounds.","lastModifiedDate":"2023-08-22"},{"lineNumber":312,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-22"},{"lineNumber":313,"author":{"gitId":"wxwern"},"content":" public Task removeTask(int index) {","lastModifiedDate":"2023-08-22"},{"lineNumber":314,"author":{"gitId":"wxwern"},"content":" return this.taskList.remove(index);","lastModifiedDate":"2023-08-22"},{"lineNumber":315,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":316,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":317,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":318,"author":{"gitId":"wxwern"},"content":" * Loads and replaces the task list in memory with the one currently in storage.","lastModifiedDate":"2023-08-27"},{"lineNumber":319,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":320,"author":{"gitId":"wxwern"},"content":" * \u003cp\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":321,"author":{"gitId":"wxwern"},"content":" * This method will load the data from storage and replace all in-memory contents.","lastModifiedDate":"2023-08-28"},{"lineNumber":322,"author":{"gitId":"wxwern"},"content":" * Any unrecognized, incompatible tasks may be omitted entirely.","lastModifiedDate":"2023-08-28"},{"lineNumber":323,"author":{"gitId":"wxwern"},"content":" * \u003c/p\u003e","lastModifiedDate":"2023-08-28"},{"lineNumber":324,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":325,"author":{"gitId":"wxwern"},"content":" * @throws IOException if there were any issues retrieving the data.","lastModifiedDate":"2023-08-27"},{"lineNumber":326,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":327,"author":{"gitId":"wxwern"},"content":" public void loadFromStorage() throws IOException, JsonSyntaxException {","lastModifiedDate":"2023-08-28"},{"lineNumber":328,"author":{"gitId":"wxwern"},"content":" Gson gson \u003d new Gson();","lastModifiedDate":"2023-08-28"},{"lineNumber":329,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":330,"author":{"gitId":"wxwern"},"content":" String data \u003d InternalStorage.loadFrom(this.storageLocation);","lastModifiedDate":"2023-08-28"},{"lineNumber":331,"author":{"gitId":"wxwern"},"content":" JsonArray array \u003d JsonParser.parseString(data).getAsJsonArray();","lastModifiedDate":"2023-08-28"},{"lineNumber":332,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":333,"author":{"gitId":"wxwern"},"content":" // Prepare a new list of tasks.","lastModifiedDate":"2023-08-28"},{"lineNumber":334,"author":{"gitId":"wxwern"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":335,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":336,"author":{"gitId":"wxwern"},"content":" // Prepare a new set of classes, from most specific to least specific.","lastModifiedDate":"2023-08-28"},{"lineNumber":337,"author":{"gitId":"wxwern"},"content":" // This ordering is required to match the provided JSON to a class that\u0027s as specific as possible.","lastModifiedDate":"2023-08-28"},{"lineNumber":338,"author":{"gitId":"wxwern"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2023-08-28"},{"lineNumber":339,"author":{"gitId":"wxwern"},"content":" Class\u003cTask\u003e[] availClasses \u003d new Class[]{ Event.class, Deadline.class, Todo.class };","lastModifiedDate":"2023-08-28"},{"lineNumber":340,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":341,"author":{"gitId":"wxwern"},"content":" // Iterate through the items in the JSON array.","lastModifiedDate":"2023-08-28"},{"lineNumber":342,"author":{"gitId":"wxwern"},"content":" for (JsonElement item: array) {","lastModifiedDate":"2023-08-28"},{"lineNumber":343,"author":{"gitId":"wxwern"},"content":" Task task \u003d null;","lastModifiedDate":"2023-08-28"},{"lineNumber":344,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":345,"author":{"gitId":"wxwern"},"content":" // Iterate through possible classes and attempt to get them.","lastModifiedDate":"2023-08-28"},{"lineNumber":346,"author":{"gitId":"wxwern"},"content":" for (Class\u003cTask\u003e cls: availClasses) {","lastModifiedDate":"2023-08-28"},{"lineNumber":347,"author":{"gitId":"wxwern"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":348,"author":{"gitId":"wxwern"},"content":" task \u003d gson.fromJson(item, cls);","lastModifiedDate":"2023-08-28"},{"lineNumber":349,"author":{"gitId":"wxwern"},"content":" task.assertValidState();","lastModifiedDate":"2023-08-28"},{"lineNumber":350,"author":{"gitId":"wxwern"},"content":" } catch (JsonSyntaxException | IllegalArgumentException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":351,"author":{"gitId":"wxwern"},"content":" // This particular task is broken. Make it null.","lastModifiedDate":"2023-08-28"},{"lineNumber":352,"author":{"gitId":"wxwern"},"content":" task \u003d null;","lastModifiedDate":"2023-08-28"},{"lineNumber":353,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":354,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":355,"author":{"gitId":"wxwern"},"content":" if (task !\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":356,"author":{"gitId":"wxwern"},"content":" break;","lastModifiedDate":"2023-08-28"},{"lineNumber":357,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":358,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":359,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":360,"author":{"gitId":"wxwern"},"content":" // Skip if we cannot parse.","lastModifiedDate":"2023-08-28"},{"lineNumber":361,"author":{"gitId":"wxwern"},"content":" if (task \u003d\u003d null) {","lastModifiedDate":"2023-08-28"},{"lineNumber":362,"author":{"gitId":"wxwern"},"content":" continue;","lastModifiedDate":"2023-08-28"},{"lineNumber":363,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":364,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":365,"author":{"gitId":"wxwern"},"content":" // Add it if we can.","lastModifiedDate":"2023-08-28"},{"lineNumber":366,"author":{"gitId":"wxwern"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-28"},{"lineNumber":367,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":368,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":369,"author":{"gitId":"wxwern"},"content":" // Replace the task list with a new one","lastModifiedDate":"2023-08-28"},{"lineNumber":370,"author":{"gitId":"wxwern"},"content":" this.taskList \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":371,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":372,"author":{"gitId":"wxwern"},"content":" } catch (JsonSyntaxException | FileNotFoundException e) {","lastModifiedDate":"2023-08-28"},{"lineNumber":373,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":374,"author":{"gitId":"wxwern"},"content":" // Silence these errors and replace the task list with a new one.","lastModifiedDate":"2023-08-28"},{"lineNumber":375,"author":{"gitId":"wxwern"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-28"},{"lineNumber":376,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":377,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":378,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":379,"author":{"gitId":"wxwern"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":380,"author":{"gitId":"wxwern"},"content":" /**","lastModifiedDate":"2023-08-27"},{"lineNumber":381,"author":{"gitId":"wxwern"},"content":" * Saves and replaces the task list in storage with the one currently in memory.","lastModifiedDate":"2023-08-27"},{"lineNumber":382,"author":{"gitId":"wxwern"},"content":" *","lastModifiedDate":"2023-08-27"},{"lineNumber":383,"author":{"gitId":"wxwern"},"content":" * @throws IOException if there were any issues saving the data.","lastModifiedDate":"2023-08-27"},{"lineNumber":384,"author":{"gitId":"wxwern"},"content":" */","lastModifiedDate":"2023-08-27"},{"lineNumber":385,"author":{"gitId":"wxwern"},"content":" public void saveToStorage() throws IOException {","lastModifiedDate":"2023-08-27"},{"lineNumber":386,"author":{"gitId":"wxwern"},"content":" Gson gson \u003d new Gson();","lastModifiedDate":"2023-08-28"},{"lineNumber":387,"author":{"gitId":"wxwern"},"content":" String data \u003d gson.toJson(this.taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":388,"author":{"gitId":"wxwern"},"content":" InternalStorage.saveTo(this.storageLocation, data);","lastModifiedDate":"2023-08-28"},{"lineNumber":389,"author":{"gitId":"wxwern"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":390,"author":{"gitId":"wxwern"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"wxwern":390}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"wxwern"},"content":"hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"wxwern"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"wxwern"},"content":"blah","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"wxwern"},"content":"todo read book","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"wxwern"},"content":"deadline return book /by 2023-06-06","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"wxwern"},"content":"event project meeting /from 2023-08-06T14:00 /to 2023-08-06T16:00","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"wxwern"},"content":"todo join sports club","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"wxwern"},"content":"todo borrow book","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"wxwern"},"content":"deadline ip week 2 /by 2024-08-24","lastModifiedDate":"2023-08-27"},{"lineNumber":12,"author":{"gitId":"wxwern"},"content":"deadline tp /by idk","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"wxwern"},"content":"deadline nonsense","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"wxwern"},"content":"event test /from 2030-01-01 /to 2040-12-31","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"wxwern"},"content":"event wrong /from /to","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"wxwern"},"content":"event missing","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"mark 5","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"wxwern"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"wxwern"},"content":"mark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"wxwern"},"content":"unmark 4","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"wxwern"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"wxwern"},"content":"mark 6","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"wxwern"},"content":"unmark 6","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"wxwern"},"content":"mark 8","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"wxwern"},"content":"mark 8","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"wxwern"},"content":"delete 4","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"wxwern"},"content":"delete 6","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"wxwern"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"wxwern"},"content":"bye","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"wxwern":34}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"wxwern"},"content":"java -Duser.language\u003den -Duser.country\u003dUS -classpath ..\\bin Duke \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":{"wxwern":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":"wxwern"},"content":"java -Duser.language\u003den -Duser.country\u003dUS -classpath ../bin Duke \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":{"wxwern":1,"-":37}}] diff --git a/wxwern_ip_master/commits.json b/wxwern_ip_master/commits.json index 25269d4c..1317c2ae 100644 --- a/wxwern_ip_master/commits.json +++ b/wxwern_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"wxwern":[{"date":"2023-08-22","commitResults":[{"hash":"55ee9edefd399cd35ec7630b84cd0940c484227a","isMergeCommit":false,"messageTitle":"add skeletal chatbot implementation","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":6}}},{"hash":"6319c1f3bef8680c4b16cbab0b49fd9b7a014201","isMergeCommit":false,"messageTitle":"add echoing POC, fix convo open/close behaviour and printouts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":5}}},{"hash":"730b04173962fd06355beeb949039f2c8b501b05","isMergeCommit":false,"messageTitle":"improve interactive CLI display","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"71f80ffaff1ba9577d8f0cd240ed09da4e30d4d8","isMergeCommit":false,"messageTitle":"add wip task manager abstraction","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":0}}},{"hash":"6da1b6c28e6cf114cc41395f961c76acf114b292","isMergeCommit":false,"messageTitle":"add wip chatbot integration with task manager","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":11}}},{"hash":"52ee2c9180c3b08cfccb1790f6f7a659adeb2fff","isMergeCommit":false,"messageTitle":"add mark/unmark as complete support","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"8a0fd259555d3d53cd0977e3c193118ca3dd28e9","isMergeCommit":false,"messageTitle":"complete task class implementation","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"643f4a8f68dfc3da4f262557e6aa5c4e7716a154","isMergeCommit":false,"messageTitle":"add distinct tasks: todos, events, deadlines","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":1}}},{"hash":"f604651be6e1452e9f655bf66538fbbe74032156","isMergeCommit":false,"messageTitle":"add wip integration with new task types to chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":11}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3bc41634e58b22a5e0be561550e7893e1419d739","isMergeCommit":false,"messageTitle":"add new command parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":0}}},{"hash":"31e1d59bbffdcc42f2e60769a29f5c688728f2f7","isMergeCommit":false,"messageTitle":"update chatbot to use command parser plus fun convo style","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":39}}},{"hash":"b4077090197322c3bc563ad410783e07930d6658","isMergeCommit":false,"messageTitle":"update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":25,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"34158bb883bf2d793184fde88f998f2c79ae4219","isMergeCommit":false,"messageTitle":"add new chatbot exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"fd95407560b5a83130f77a6345f87853009f043f","isMergeCommit":false,"messageTitle":"make chatbot handle exceptions and report to user","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":146}}},{"hash":"8835d8936191839a94df64aad6f659affbe3f52b","isMergeCommit":false,"messageTitle":"improve error phrasing, add missing error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":5}}},{"hash":"e0e85efa443146d767c52151c450236260a7d43a","isMergeCommit":false,"messageTitle":"add task delete support to chatbot","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":16}}},{"hash":"66843b3bbea24a6c411167c7c79389229dd9a9b5","isMergeCommit":false,"messageTitle":"Fix chatbot singleton not actually being a singleton","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"d8a9636ebe928c04259652ea927acefb4ce03d31","isMergeCommit":false,"messageTitle":"fix functional interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"f7c26f7a8a8f8fde8b0d0e462ef613ec4920b00c","isMergeCommit":false,"messageTitle":"Refactor commands to support enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":28}}},{"hash":"7f628605b0c4b4a161d4bcd7159173a017ecf2e9","isMergeCommit":false,"messageTitle":"Rephrase Mark list operation enum to MarkComplete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"f06ec1ae608153da485e5fc8aa7ed0c21cd1f6f5","isMergeCommit":false,"messageTitle":"Update unit tests to also test deletions and errors","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"4fa7c4d3872b5c29037eeca69d87ff4e7c40f18a","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"438aa1a631229b50d8d2927edc866d9c0ac4a1e2","isMergeCommit":false,"messageTitle":"Add datetime input validation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":19}}},{"hash":"ccdb8e48656f8a34981a6ea2a0516f400da41037","isMergeCommit":false,"messageTitle":"Update unit tests for new datetime formats","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"5745f726474c7e6b5d25b64ff1e6496b87597b26","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wxwern":{"java":985,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":34}},"authorContributionVariance":{"wxwern":88915.6},"authorDisplayNameMap":{"wxwern":"CS2103T-W08-3 LIM .. JIE"}} +{"authorDailyContributionsMap":{"wxwern":[{"date":"2023-08-22","commitResults":[{"hash":"55ee9edefd399cd35ec7630b84cd0940c484227a","isMergeCommit":false,"messageTitle":"add skeletal chatbot implementation","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":6}}},{"hash":"6319c1f3bef8680c4b16cbab0b49fd9b7a014201","isMergeCommit":false,"messageTitle":"add echoing POC, fix convo open/close behaviour and printouts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":5}}},{"hash":"730b04173962fd06355beeb949039f2c8b501b05","isMergeCommit":false,"messageTitle":"improve interactive CLI display","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"71f80ffaff1ba9577d8f0cd240ed09da4e30d4d8","isMergeCommit":false,"messageTitle":"add wip task manager abstraction","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":0}}},{"hash":"6da1b6c28e6cf114cc41395f961c76acf114b292","isMergeCommit":false,"messageTitle":"add wip chatbot integration with task manager","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":11}}},{"hash":"52ee2c9180c3b08cfccb1790f6f7a659adeb2fff","isMergeCommit":false,"messageTitle":"add mark/unmark as complete support","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":3}}},{"hash":"8a0fd259555d3d53cd0977e3c193118ca3dd28e9","isMergeCommit":false,"messageTitle":"complete task class implementation","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":4}}},{"hash":"643f4a8f68dfc3da4f262557e6aa5c4e7716a154","isMergeCommit":false,"messageTitle":"add distinct tasks: todos, events, deadlines","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":1}}},{"hash":"f604651be6e1452e9f655bf66538fbbe74032156","isMergeCommit":false,"messageTitle":"add wip integration with new task types to chatbot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":11}}}]},{"date":"2023-08-23","commitResults":[{"hash":"3bc41634e58b22a5e0be561550e7893e1419d739","isMergeCommit":false,"messageTitle":"add new command parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":0}}},{"hash":"31e1d59bbffdcc42f2e60769a29f5c688728f2f7","isMergeCommit":false,"messageTitle":"update chatbot to use command parser plus fun convo style","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":39}}},{"hash":"b4077090197322c3bc563ad410783e07930d6658","isMergeCommit":false,"messageTitle":"update tests","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":25,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"34158bb883bf2d793184fde88f998f2c79ae4219","isMergeCommit":false,"messageTitle":"add new chatbot exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"fd95407560b5a83130f77a6345f87853009f043f","isMergeCommit":false,"messageTitle":"make chatbot handle exceptions and report to user","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":185,"deletions":146}}},{"hash":"8835d8936191839a94df64aad6f659affbe3f52b","isMergeCommit":false,"messageTitle":"improve error phrasing, add missing error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":5}}},{"hash":"e0e85efa443146d767c52151c450236260a7d43a","isMergeCommit":false,"messageTitle":"add task delete support to chatbot","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":16}}},{"hash":"66843b3bbea24a6c411167c7c79389229dd9a9b5","isMergeCommit":false,"messageTitle":"Fix chatbot singleton not actually being a singleton","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"d8a9636ebe928c04259652ea927acefb4ce03d31","isMergeCommit":false,"messageTitle":"fix functional interface","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"f7c26f7a8a8f8fde8b0d0e462ef613ec4920b00c","isMergeCommit":false,"messageTitle":"Refactor commands to support enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":28}}},{"hash":"7f628605b0c4b4a161d4bcd7159173a017ecf2e9","isMergeCommit":false,"messageTitle":"Rephrase Mark list operation enum to MarkComplete","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":9}}},{"hash":"f06ec1ae608153da485e5fc8aa7ed0c21cd1f6f5","isMergeCommit":false,"messageTitle":"Update unit tests to also test deletions and errors","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0}}}]},{"date":"2023-08-27","commitResults":[{"hash":"38e03dd2098fa595065f620cde2b6c4a91aa58dc","isMergeCommit":false,"messageTitle":"Add WIP persistent storage support","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":147,"deletions":2}}},{"hash":"4fa7c4d3872b5c29037eeca69d87ff4e7c40f18a","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"aa169f6d6e9093f864eeb714ff4f592b7f3fce29","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-Level-7","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"438aa1a631229b50d8d2927edc866d9c0ac4a1e2","isMergeCommit":false,"messageTitle":"Add datetime input validation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":19}}},{"hash":"ccdb8e48656f8a34981a6ea2a0516f400da41037","isMergeCommit":false,"messageTitle":"Update unit tests for new datetime formats","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":2,"deletions":2}}},{"hash":"5745f726474c7e6b5d25b64ff1e6496b87597b26","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5930c3b292ccb03b6fb111b937dd7061ed6299e8","isMergeCommit":false,"messageTitle":"Add Gson dependency for JSON conversion","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"fade8f263f05497c981d25b1e00a4fcd4b8e4568","isMergeCommit":false,"messageTitle":"Complete persistent storage support","messageBody":"This integrates with Google\u0027s Gson and saves data in the relative\nlocation `todoifydata/tasks.json`.\n\nNote: The text-based unit test suite is currently broken by inability\nto compile Gson (it doesn\u0027t use Gradle). It should be migrated to JUnit\nsoon.\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":6}}},{"hash":"0fefa353e9bd22dca49ac35140a1080bec3e835a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"wxwern":{"java":1275,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":34}},"authorContributionVariance":{"wxwern":82705.69},"authorDisplayNameMap":{"wxwern":"CS2103T-W08-3 LIM .. JIE"}} diff --git a/xavierpok_ip_master/authorship.json b/xavierpok_ip_master/authorship.json index dbc3ffca..a2750112 100644 --- a/xavierpok_ip_master/authorship.json +++ b/xavierpok_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Kniaz.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import logic.taskhandling.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import parser.KniazCommand;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"import parser.KniazParser;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"public class Kniaz {","lastModifiedDate":"2023-08-20"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * Seperator to make things a bit prettier","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" private static final String SEPERATOR \u003d \"_\".repeat(20) + \"\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * Logo to use to represent this chatbot in the command line","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" private static final String LOGO \u003d \"KNIAZ\";","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" // Placeholder for now, intend to make prettier later","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" // Kniaz is a rough equivalent for Duke in eastern europe - get it?","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" * Message to print when exiting.","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" private static final String EXITMESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" * All tasks stored by Kniaz.","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" * Main function of Kniaz, that is intended as entry point into the program.","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" * @param args arguments to be entered into Kniaz when it is called from command line","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" // initialise a scanner object to read from input","lastModifiedDate":"2023-08-20"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Hello from\\n\" + Kniaz.LOGO);","lastModifiedDate":"2023-08-20"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":" KniazCommand nextCommand; //Initialise the input","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" while (true) { // I find this a bit icky but we rely on guard clauses to break instead","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":" nextCommand \u003d KniazParser.parseCommand(input.nextLine());","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":" // We try to parse...","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"xavierpok"},"content":" // And if there\u0027s an issue in parsing, we feedback user input!","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"xavierpok"},"content":" // this needs to be here, because we skip the rest.","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"xavierpok"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":79,"author":{"gitId":"xavierpok"},"content":" if (nextCommand.instructionEquals(KniazParser.InstructionType.QUIT)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"xavierpok"},"content":" break; // exit if we are told to quit","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":83,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":84,"author":{"gitId":"xavierpok"},"content":" if (nextCommand.instructionEquals(KniazParser.InstructionType.LIST)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":86,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskList.toPrintString());","lastModifiedDate":"2023-08-21"},{"lineNumber":87,"author":{"gitId":"xavierpok"},"content":" // print out if we are asked to list","lastModifiedDate":"2023-08-20"},{"lineNumber":88,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.MARK)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":90,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":92,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d MarkHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been marked as done.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":94,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.UNMARK)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":104,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":106,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d UnmarkHandler.handle(taskList, nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Ah, so you didn\u0027t actually finish it. Correcting your mistake.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":108,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":110,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.DELETE)){","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d DeleteHandler.handle(taskList, nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"This task has been erased, mercy on its data :\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"xavierpok"},"content":" System.out.println(String.format(\"Only %s tasks remain.\",taskList.size()));","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.TODO)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":126,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":128,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d ToDoHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added To-Do : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":132,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":136,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.DEADLINE)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":138,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":140,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d DeadlineHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added as a Deadline : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":143,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":144,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":147,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":148,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.EVENT)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":150,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":151,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d EventHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added To-Do : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":157,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":159,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":161,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":162,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":163,"author":{"gitId":"xavierpok"},"content":" // Each command input will invariably result in a seperator line being printed","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"xavierpok"},"content":" // Helps to keep it looking nice","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"xavierpok"},"content":" System.out.println((Kniaz.SEPERATOR));","lastModifiedDate":"2023-08-20"},{"lineNumber":166,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":167,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":168,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":169,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":170,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":171,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.EXITMESSAGE);","lastModifiedDate":"2023-08-20"},{"lineNumber":172,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":173,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":174,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":175,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":176,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":177,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":178,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":179,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":180,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"xavierpok":181}},{"path":"src/main/java/exceptions/KniazRuntimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package exceptions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":" * Exception that encapsulations typical Kniaz excpetions we expect to run into at runtime","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * Typically, these involve I/O of some kind, such as invalid commands or invalid inputs","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" * Most importantly, contains an additional user message that is meant to be seen by the user","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * And NOT for debugging/development purposes","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public class KniazRuntimeException extends RuntimeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * The message that is meant to be seen by the user","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private String userMessage \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * Constructor for an exception, which constructs it with a non-user facing message, a user-facing message and","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * a cause","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @param message the message that is NOT meant to be seen by the user, e.g. for debugging","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param userMessage the message that IS meant to be seen as user feedback","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param cause what caused this, see java.Exceptions for more details","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" public KniazRuntimeException(String message, String userMessage, Throwable cause) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" super(message,cause);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" this.userMessage \u003d userMessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" * Getter method for the user-facing message","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing message of this exception","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" public String getUserMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" return userMessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":36}},{"path":"src/main/java/logic/taskhandling/DeadlineHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import logic.taskhandling.commandHandler;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * of Deadline(see task.Deadline) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into Deadline construction","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"public abstract class DeadlineHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of a Deadline from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new Deadline into","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // Deadlines expect exactly 2 arguments -- name and time","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into making deadline can only accept two,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" // Two arguments only!","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into Deadline, can only accept two\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave not enough to make an Deadline, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" // handle creation down here","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" // pull teh parameters","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" String taskBy \u003d args.get(1);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" //make the deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new Deadline(taskName, taskBy);","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" // add it in","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" // for the user to see - their shiny new deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":57}},{"path":"src/main/java/logic/taskhandling/DeleteHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of deleting a task from a list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Also handles input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class DeleteHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Deletes a task, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for deletion","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the deleted task","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to delete this task","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" // one argument only -- the index","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into deletion, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" } else if (args.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // one argument only","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" \"%s is too few args into deletion, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" \"You gave %s arguments for this operation. How am I to know which you want?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String numberAsString \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" // guaranteed to have 1 at this point","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" try { //try to catch problems with indexing or conversion into int","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" int index \u003d Integer.parseInt(numberAsString) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" //Java is 0-indexed but user-facing I/O is 1-indexed, so subtract 1 to correct","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" Task removedTask \u003d taskList.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" return removedTask.toPrintString(); // Tell the user the dark deed of deletion is done","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" // If taskList complains that the index we tried to mark as is invalid","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" \"There is no such entry numbered %s. Try again, but correct.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" // If we tried converting to an integer but it\u0027s not a valid integer","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" \"%s is not a valid integer. Please consult your nearest mathematics textbook.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":62}},{"path":"src/main/java/logic/taskhandling/EventHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * of Event(see task.Event) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into Event construction","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"public abstract class EventHandler implements commandHandler{","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of an Event from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new Event into","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a Event","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" //Event accepts only three arguments -- name, from, to.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into Event, can only accept three,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" // Three arguments only!","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into Event, can only accept one\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave not enough to make an Event, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" // pull the indivivual arguments out","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" String taskFrom \u003d args.get(1);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" String taskTo \u003d args.get(2);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" //make the event","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new Event(taskName,taskFrom,taskTo);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" // add it to the list","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" // pass the user-facing strip rep of this up so the user can see their new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":55}},{"path":"src/main/java/logic/taskhandling/MarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class MarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Marks a task as done, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Calls MarkUnmarkHandler for most of the actual implementation.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied to mark as done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" return MarkUnmarkHandler.handle(taskList,args,true);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":24}},{"path":"src/main/java/logic/taskhandling/MarkUnmarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as done AND undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Should not be called, call MarkHandler.handle or UnmarkHandler.handle respectively.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class MarkUnmarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Marks a task as done / not done, depeending on the boolean supplied, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied (such as which to mark/unmark)","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param toSetToMarked whether to set the task as done(True) or undone(False)","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" protected static String handle(TaskList taskList, List\u003cString\u003e args, boolean toSetToMarked) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" // one argument only -- the index","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into marking/unmarking, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" } else if (args.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // one argument only","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" \"%s is too few args into marking/unmarking, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" \"You gave %s arguments for this operation. How am I to know which you want?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String numberAsString \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" // guaranteed to have 1 at this point","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" try { //try to catch problems with indexing or conversion into int","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" int index \u003d Integer.parseInt(numberAsString) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" //Java is 0-indexed but user-facing I/O is 1-indexed, so subtract 1 to correct","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" if (toSetToMarked) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" taskList.markAsDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" taskList.markAsUndone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" return taskList.get(index).toPrintString(); // pass up the shiny changed task to show the user!","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" // If taskList complains that the index we tried to mark as is invalid","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" \"There is no such entry numbered %s. Try again, but correct.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" // If we tried converting to an integer but it\u0027s not a valid integer","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" \"%s is not a valid integer. Please consult your nearest mathematics textbook.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(),userMessage,e);","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":66}},{"path":"src/main/java/logic/taskhandling/ToDoHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * of ToDo(see task.ToDo) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into ToDo construction","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"public abstract class ToDoHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of a ToDo from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new ToDo into","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" // ToDo accepts only one argument -- Name","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into ToDo, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" // one argument only!","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into ToDo, can only accept one\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave no task to add, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" // extract from the arguments","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" // make the ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" //Chuck it into the list","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" // pass up what the user needs to see for feedback","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":54}},{"path":"src/main/java/logic/taskhandling/UnmarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class UnmarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Marks a task as not done, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Calls MarkUnmarkHandler for most of the actual implementation.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied to mark as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" return MarkUnmarkHandler.handle(taskList,args,false);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":24}},{"path":"src/main/java/logic/taskhandling/commandHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * Interface that encapsulates an abstract class that handles specific commands","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Meant to be subclassed, this is just here as a template","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"public interface commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * Handle whatever command this is supposed to. Should not be actually called, is a template","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param tasklist the relevant tasklist to do operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments to this command","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @return the String feedback that this command should return (like the string rep. of the task that was created)","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception telling you this method should not (typically) be called directly.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList tasklist, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" \"commandHandler.Handle called directly, not meant to be!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" \"You\u0027re not meant to see this\",","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":28}},{"path":"src/main/java/parser/KniazCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package parser;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a command given to Kniaz, should only be instantiated via KniazParser when it parses a command","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public class KniazCommand {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * The type of instruction this command contains -- Such as list, event, bye, etc.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private KniazParser.InstructionType instruction;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * the arguments given to this command","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" private List\u003cString\u003e args;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Protected constructor -- This shouldn\u0027t be instantiated from areas outside the parser package","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param instruction the type of instruction this command contains","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments to the command","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" protected KniazCommand(KniazParser.InstructionType instruction, String... args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" this.instruction \u003d instruction;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" this.args \u003d Arrays.asList(args);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" * whether this has a certain instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" * @param compareTo the instruction to comapre against","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * @return whether this command has the supplied instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public boolean instructionEquals(KniazParser.InstructionType compareTo) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" return this.instruction.equals(compareTo);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" * Getter method for the arguments in this command","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" * @return the arguments in this command, in list form","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" public List\u003cString\u003e getArgs() {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" return args;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":47}},{"path":"src/main/java/parser/KniazParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package parser;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * Abstract class encapsulating logic of parsing \u0026 tokenizing commands given to Kniaz","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public abstract class KniazParser {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" // doesn\u0027t need to be instantiated to do its job","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" // contains just the logic for parsing input/outputs after Kniaz decides what kind of input it is","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" // helps keep Kniaz neat","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Valid pattern for Event commands","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * TODO : Implement similar regex for all commands","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" private static final String EVENTPATTERN \u003d \".*from.*to.*\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * The types of instructions that Kniaz can accept","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Each member of this enum has an alias, that represents the command typed into Kniaz","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * E.g. the DEADLINE InstructionType is related to the command \"deadline\".","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public enum InstructionType {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" QUIT(\"bye\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" INVALID(\"\"); // placeholder for anything not recognised","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public final String alias;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" private InstructionType(String alias){","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" this.alias \u003d alias;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * Parses the given line and breaks it down into a KniazCommand","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * If an unknown instruction is entered, throws a KniazRunTimeException","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" * @param rawLine the line to parse","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" * @return the Command that line represented","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong, such as invalid commands","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" public static KniazCommand parseCommand(String rawLine) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" String strippedLine \u003d rawLine.strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" // The lines below are fairly self-explanatory","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" // Just checks for each alias in our enum and makes the right KniazCommand","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" // TODO : refactor this to get rid of the giant if-else ladder (if we can!)","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" if (strippedLine.equals(InstructionType.QUIT.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.QUIT);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" if (strippedLine.equals(InstructionType.LIST.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand((InstructionType.LIST));","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":" // print out if we are asked to list","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.MARK.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"xavierpok"},"content":" // handle parsing which entry the user wants to mark here","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.MARK.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.MARK, entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.UNMARK.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"xavierpok"},"content":" // handle parsing which entry user wants to unmark here","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.UNMARK.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.UNMARK, entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.DELETE.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"xavierpok"},"content":" //handle parsing which entry user wants to delete here","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.DELETE.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.DELETE,entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.TODO.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d KniazParser.getAfter(strippedLine,InstructionType.TODO.alias).strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.TODO, taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.DEADLINE.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"xavierpok"},"content":" // pull the args for this command","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"xavierpok"},"content":" String deadlineArgs \u003d KniazParser.getAfter(strippedLine, InstructionType.DEADLINE.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"xavierpok"},"content":" String[] tokenizedDlineArgs \u003d deadlineArgs.split(\"\\\\s*/\\\\s*(by)\\\\s*\");","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"xavierpok"},"content":" // regex \\s* represents any arbitrary number of whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"xavierpok"},"content":" // Also strips the by out","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"xavierpok"},"content":" // so this split input strips whitespace in between delims","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"xavierpok"},"content":" // Split it up by the slash and strip whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.DEADLINE, tokenizedDlineArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.EVENT.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"xavierpok"},"content":" String eventArgs \u003d KniazParser.getAfter(strippedLine, InstructionType.EVENT.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"xavierpok"},"content":" if (!eventArgs.matches(KniazParser.EVENTPATTERN)) { //Handles format validation here for Events","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"xavierpok"},"content":" String.format(\"Wrong input format in %s\",eventArgs),","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"xavierpok"},"content":" \"Your input is formatted wrongly, try again.\",","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"xavierpok"},"content":" String[] tokenizedEventArgs \u003d eventArgs.split(\"\\\\s*/\\\\s*(from|to)\\\\s*\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"xavierpok"},"content":" // gets rid of the from/to also, in addition to splitting and stripping whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.EVENT, tokenizedEventArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"xavierpok"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"xavierpok"},"content":" String.format(\"Unrecognised input : %s\", strippedLine),","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"xavierpok"},"content":" String.format(\"I did not recognise %s as an input, try again.\", strippedLine),","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"xavierpok"},"content":" * Helper function to get after a given substring","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"xavierpok"},"content":" * @param fullString full string to scan","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"xavierpok"},"content":" * @param subString what substring to look for","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"xavierpok"},"content":" * @return everything in fullString that comes after subString","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"xavierpok"},"content":" private static String getAfter(String fullString, String subString) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"xavierpok"},"content":" int indexOfSubString \u003d fullString.indexOf(subString);","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"xavierpok"},"content":" return fullString.substring(indexOfSubString + subString.length()).strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"xavierpok"},"content":" // add the substring length to skip to the end of it","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":142}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a task with a singular deadline,","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * so has a name, completion status, and a time representing the deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * D for [D]eadline","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[D]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * String representing the deadline of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" private String deadlineTime \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * Constructor for Deadline, setting name and time","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @param deadlineName the name of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param deadlineTime the time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public Deadline(String deadlineName, String deadlineTime) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" super(deadlineName, false);","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" this.deadlineTime \u003d deadlineTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Deadline, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(a Deadline), its name, when it is due, and whether it is done.","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" String postpend \u003d String.format(\"(by : %s)\",this.deadlineTime);","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" return Deadline.PREPEND + super.toPrintString() + postpend;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":41}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * E for [E]vent","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[E]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * String representing whene this Event starts","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private String startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * String representing when this Event ends","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" private String endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Constructor for Event, setting name, starting time, ending time","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param eventName the name of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @param startTime the starting time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" * @param endTime the ending time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" public Event(String eventName, String startTime, String endTime) {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" super(eventName, false);","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Event, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(an Event), its name, when it starts, when it ends, and whether it is done.","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" String postpend \u003d String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" \" from : %s to: %s\", this.startTime, this.endTime","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" ); //need a whitespace here for formatting reasons","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" return Event.PREPEND + super.toPrintString() + postpend;","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":45}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a single task to be done (by the user) in Kniaz","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Whether this task is done","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Name of this task","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" private String taskName \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * The (protected) constructor for this task, mostly for inheritance by subclasses","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param taskName name of task","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @param isDone whether it is done","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" protected Task(String taskName, boolean isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" * Marks this task as done, does NOT check for if it was already done","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d true ;","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" * Marks this task as not done, does NOT check for if it was already undone","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Task, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" * whether this task is done and its name","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" String statusIcon \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" statusIcon \u003d \"X\";","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" } else if (!this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" statusIcon \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" return String.format(\"[%s] %s\", statusIcon, this.taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" // return in format [statusIcon] taskname","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":60}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a list of Tasks, supports easy string representation, refer to Task for more details about","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * what Tasks are.","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" // Parent constructor is (implicitly) used","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Returns the user-facing string representation of TaskList,","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * which is a numbered list of the user-facing string representation of each Task,","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * with a newline in between each entry","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @return the string representation of TaskList","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" StringBuilder out \u003d new StringBuilder();","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" Task currTask \u003d this.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" String newLine \u003d String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" \"%d. %s\\n\", i+1 , currTask.toPrintString());","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // User probably expects to start counting from 1 instead of 0","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" // so need to add 1 here","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" out.append(newLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" return out.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" * Marks a given task specified by index as done","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" * @param index the index of the task to mark as done","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" public void markAsUndone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" this.get(index).markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" * Marks the given task specified by index as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * @param index the index of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" this.get(index).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":59}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a Task that is a to-do, lacking a date and only containing a name and completion status","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * T for [T]oDo","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[T]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * Constructor for a ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param toDoName the name of this ToDo","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" public ToDo(String toDoName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" super(toDoName,false);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this ToDo, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(a ToDo), its name and whether it is done","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" return ToDo.PREPEND + super.toPrintString();","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"todo read book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"test2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"event bad event /to 4pm from 2pm","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"xavierpok":10}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"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":"xavierpok"},"content":"java -classpath ../bin Kniaz \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":{"xavierpok":1,"-":37}}] +[{"path":"src/main/java/Kniaz.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-20"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import logic.taskhandling.*;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"import parser.KniazCommand;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"import parser.KniazParser;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"import save.KniazLoader;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"import save.KniazSaver;","lastModifiedDate":"2023-08-27"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"public class Kniaz {","lastModifiedDate":"2023-08-20"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Seperator to make things a bit prettier","lastModifiedDate":"2023-08-20"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" private static final String SEPERATOR \u003d \"_\".repeat(20) + \"\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" * Logo to use to represent this chatbot in the command line","lastModifiedDate":"2023-08-20"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" private static final String LOGO \u003d \"KNIAZ\";","lastModifiedDate":"2023-08-20"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" // Placeholder for now, intend to make prettier later","lastModifiedDate":"2023-08-20"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" // Kniaz is a rough equivalent for Duke in eastern europe - get it?","lastModifiedDate":"2023-08-20"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * Message to print when exiting.","lastModifiedDate":"2023-08-20"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" private static final String EXITMESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2023-08-20"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" * All tasks stored by Kniaz.","lastModifiedDate":"2023-08-20"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-20"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * Main function of Kniaz, that is intended as entry point into the program.","lastModifiedDate":"2023-08-20"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * @param args arguments to be entered into Kniaz when it is called from command line","lastModifiedDate":"2023-08-20"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-20"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-20"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":"// String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"// + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":"// + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":"// + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-20"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"// + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-20"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-20"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" // initialise a scanner object to read from input","lastModifiedDate":"2023-08-20"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Hello from\\n\" + Kniaz.LOGO);","lastModifiedDate":"2023-08-20"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-20"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":" KniazSaver kniazSaver \u003d new KniazSaver(); // use default","lastModifiedDate":"2023-08-27"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":" KniazLoader kniazLoader \u003d new KniazLoader(); // use default","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":" try { //wrap this in a try-catch because loading has many runtime exceptions that might occur","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":" taskList \u003d kniazLoader.load();","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"xavierpok"},"content":" } catch (IOException e) { // For IOExceptions in general","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Could not load previous.\");","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":73,"author":{"gitId":"xavierpok"},"content":" } catch (ClassNotFoundException e) { // For when the data is corrupted","lastModifiedDate":"2023-08-28"},{"lineNumber":74,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Data did not align to a class\");","lastModifiedDate":"2023-08-28"},{"lineNumber":75,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-28"},{"lineNumber":76,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":77,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":78,"author":{"gitId":"xavierpok"},"content":" KniazCommand nextCommand; //Initialise the input","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"xavierpok"},"content":" while (true) { // I find this a bit icky but we rely on guard clauses to break instead","lastModifiedDate":"2023-08-20"},{"lineNumber":80,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":81,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xavierpok"},"content":" nextCommand \u003d KniazParser.parseCommand(input.nextLine());","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"xavierpok"},"content":" // We try to parse...","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"xavierpok"},"content":" // And if there\u0027s an issue in parsing, we feedback user input!","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xavierpok"},"content":" // this needs to be here, because we skip the rest.","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"xavierpok"},"content":" continue;","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":94,"author":{"gitId":"xavierpok"},"content":" if (nextCommand.instructionEquals(KniazParser.InstructionType.QUIT)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":96,"author":{"gitId":"xavierpok"},"content":" break; // exit if we are told to quit","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":98,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":99,"author":{"gitId":"xavierpok"},"content":" if (nextCommand.instructionEquals(KniazParser.InstructionType.LIST)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":101,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskList.toPrintString());","lastModifiedDate":"2023-08-21"},{"lineNumber":102,"author":{"gitId":"xavierpok"},"content":" // print out if we are asked to list","lastModifiedDate":"2023-08-20"},{"lineNumber":103,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.MARK)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":105,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":107,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d MarkHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been marked as done.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":109,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":116,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.UNMARK)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":121,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d UnmarkHandler.handle(taskList, nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Ah, so you didn\u0027t actually finish it. Correcting your mistake.\");","lastModifiedDate":"2023-08-21"},{"lineNumber":123,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":125,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":129,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.DELETE)){","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d DeleteHandler.handle(taskList, nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"This task has been erased, mercy on its data :\");","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"xavierpok"},"content":" System.out.println(String.format(\"Only %s tasks remain.\",taskList.size()));","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.TODO)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":141,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":143,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d ToDoHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":144,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added To-Do : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":145,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":146,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":147,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":148,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":149,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":150,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":151,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.DEADLINE)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":152,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":153,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":155,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d DeadlineHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added as a Deadline : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":159,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":163,"author":{"gitId":"xavierpok"},"content":" } else if (nextCommand.instructionEquals(KniazParser.InstructionType.EVENT)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":167,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":168,"author":{"gitId":"xavierpok"},"content":" String taskString \u003d EventHandler.handle(taskList ,nextCommand.getArgs());","lastModifiedDate":"2023-08-23"},{"lineNumber":169,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"As you say. The task has been added To-Do : \");","lastModifiedDate":"2023-08-23"},{"lineNumber":170,"author":{"gitId":"xavierpok"},"content":" System.out.println(taskString);","lastModifiedDate":"2023-08-23"},{"lineNumber":171,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":172,"author":{"gitId":"xavierpok"},"content":" } catch (KniazRuntimeException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":173,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getUserMessage());","lastModifiedDate":"2023-08-23"},{"lineNumber":174,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":175,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":176,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":177,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":178,"author":{"gitId":"xavierpok"},"content":" // Each command input will invariably result in a seperator line being printed","lastModifiedDate":"2023-08-23"},{"lineNumber":179,"author":{"gitId":"xavierpok"},"content":" // Helps to keep it looking nice","lastModifiedDate":"2023-08-21"},{"lineNumber":180,"author":{"gitId":"xavierpok"},"content":" System.out.println((Kniaz.SEPERATOR));","lastModifiedDate":"2023-08-20"},{"lineNumber":181,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":182,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":183,"author":{"gitId":"xavierpok"},"content":" try {","lastModifiedDate":"2023-08-27"},{"lineNumber":184,"author":{"gitId":"xavierpok"},"content":" kniazSaver.save(taskList);","lastModifiedDate":"2023-08-27"},{"lineNumber":185,"author":{"gitId":"xavierpok"},"content":" // Every time a command is entered, save.","lastModifiedDate":"2023-08-28"},{"lineNumber":186,"author":{"gitId":"xavierpok"},"content":" // This is because the list can only ever be updated via command.","lastModifiedDate":"2023-08-28"},{"lineNumber":187,"author":{"gitId":"xavierpok"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":188,"author":{"gitId":"xavierpok"},"content":" // When something goes wrong in trying to save with regards to IO","lastModifiedDate":"2023-08-28"},{"lineNumber":189,"author":{"gitId":"xavierpok"},"content":" // Should not happen in usual operation","lastModifiedDate":"2023-08-28"},{"lineNumber":190,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"Something went wrong trying to save, I won\u0027t remember your tasks on reload!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":191,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":192,"author":{"gitId":"xavierpok"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":193,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":194,"author":{"gitId":"xavierpok"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2023-08-27"},{"lineNumber":195,"author":{"gitId":"xavierpok"},"content":" // When the security manager doesn\u0027t let us save","lastModifiedDate":"2023-08-28"},{"lineNumber":196,"author":{"gitId":"xavierpok"},"content":" // Complain back to the user","lastModifiedDate":"2023-08-28"},{"lineNumber":197,"author":{"gitId":"xavierpok"},"content":" System.out.println(\"I couldn\u0027t save because I wasn\u0027t allowed!\");","lastModifiedDate":"2023-08-27"},{"lineNumber":198,"author":{"gitId":"xavierpok"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2023-08-27"},{"lineNumber":199,"author":{"gitId":"xavierpok"},"content":" break;","lastModifiedDate":"2023-08-27"},{"lineNumber":200,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":201,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":202,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":203,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":204,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":205,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":206,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.EXITMESSAGE);","lastModifiedDate":"2023-08-20"},{"lineNumber":207,"author":{"gitId":"xavierpok"},"content":" System.out.println(Kniaz.SEPERATOR);","lastModifiedDate":"2023-08-20"},{"lineNumber":208,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-20"},{"lineNumber":209,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":210,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":211,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":212,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":213,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":214,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":215,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-20"},{"lineNumber":216,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-20"}],"authorContributionMap":{"xavierpok":216}},{"path":"src/main/java/exceptions/KniazRuntimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package exceptions;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":" * Exception that encapsulations typical Kniaz excpetions we expect to run into at runtime","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * Typically, these involve I/O of some kind, such as invalid commands or invalid inputs","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" * Most importantly, contains an additional user message that is meant to be seen by the user","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * And NOT for debugging/development purposes","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public class KniazRuntimeException extends RuntimeException{","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * The message that is meant to be seen by the user","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private String userMessage \u003d \"\";","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * Constructor for an exception, which constructs it with a non-user facing message, a user-facing message and","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * a cause","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @param message the message that is NOT meant to be seen by the user, e.g. for debugging","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param userMessage the message that IS meant to be seen as user feedback","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param cause what caused this, see java.Exceptions for more details","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" public KniazRuntimeException(String message, String userMessage, Throwable cause) {","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" super(message,cause);","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" this.userMessage \u003d userMessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" * Getter method for the user-facing message","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing message of this exception","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" public String getUserMessage() {","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" return userMessage;","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":36}},{"path":"src/main/java/logic/taskhandling/DeadlineHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import logic.taskhandling.commandHandler;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Deadline;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * of Deadline(see task.Deadline) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into Deadline construction","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"public abstract class DeadlineHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of a Deadline from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new Deadline into","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a Deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // Deadlines expect exactly 2 arguments -- name and time","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into making deadline can only accept two,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 2) {","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" // Two arguments only!","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into Deadline, can only accept two\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave not enough to make an Deadline, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" // handle creation down here","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" // pull teh parameters","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" String taskBy \u003d args.get(1);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" //make the deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new Deadline(taskName, taskBy);","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" // add it in","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" // for the user to see - their shiny new deadline","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":57}},{"path":"src/main/java/logic/taskhandling/DeleteHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of deleting a task from a list","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Also handles input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class DeleteHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Deletes a task, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" *","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for deletion","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the deleted task","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to delete this task","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" // one argument only -- the index","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into deletion, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" } else if (args.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // one argument only","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" \"%s is too few args into deletion, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" \"You gave %s arguments for this operation. How am I to know which you want?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String numberAsString \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" // guaranteed to have 1 at this point","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" try { //try to catch problems with indexing or conversion into int","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" int index \u003d Integer.parseInt(numberAsString) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" //Java is 0-indexed but user-facing I/O is 1-indexed, so subtract 1 to correct","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" Task removedTask \u003d taskList.remove(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" return removedTask.toPrintString(); // Tell the user the dark deed of deletion is done","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" // If taskList complains that the index we tried to mark as is invalid","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" \"There is no such entry numbered %s. Try again, but correct.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" // If we tried converting to an integer but it\u0027s not a valid integer","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" \"%s is not a valid integer. Please consult your nearest mathematics textbook.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":62}},{"path":"src/main/java/logic/taskhandling/EventHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.Event;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * of Event(see task.Event) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into Event construction","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"public abstract class EventHandler implements commandHandler{","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of an Event from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new Event into","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a Event","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" //Event accepts only three arguments -- name, from, to.","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into Event, can only accept three,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 3) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" // Three arguments only!","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into Event, can only accept one\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave not enough to make an Event, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" // pull the indivivual arguments out","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" String taskFrom \u003d args.get(1);","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" String taskTo \u003d args.get(2);","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" //make the event","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new Event(taskName,taskFrom,taskTo);","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" // add it to the list","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" // pass the user-facing strip rep of this up so the user can see their new Event","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":55}},{"path":"src/main/java/logic/taskhandling/MarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as done.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class MarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Marks a task as done, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Calls MarkUnmarkHandler for most of the actual implementation.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied to mark as done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as done","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" return MarkUnmarkHandler.handle(taskList,args,true);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":24}},{"path":"src/main/java/logic/taskhandling/MarkUnmarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as done AND undone.","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Should not be called, call MarkHandler.handle or UnmarkHandler.handle respectively.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class MarkUnmarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Marks a task as done / not done, depeending on the boolean supplied, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied (such as which to mark/unmark)","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param toSetToMarked whether to set the task as done(True) or undone(False)","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" protected static String handle(TaskList taskList, List\u003cString\u003e args, boolean toSetToMarked) {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" // one argument only -- the index","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into marking/unmarking, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" } else if (args.isEmpty()) {","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" // one argument only","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" \"%s is too few args into marking/unmarking, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" \"You gave %s arguments for this operation. How am I to know which you want?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" String numberAsString \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" // guaranteed to have 1 at this point","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" try { //try to catch problems with indexing or conversion into int","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" int index \u003d Integer.parseInt(numberAsString) - 1;","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" //Java is 0-indexed but user-facing I/O is 1-indexed, so subtract 1 to correct","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" if (toSetToMarked) {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" taskList.markAsDone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" taskList.markAsUndone(index);","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" return taskList.get(index).toPrintString(); // pass up the shiny changed task to show the user!","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" // If taskList complains that the index we tried to mark as is invalid","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" \"There is no such entry numbered %s. Try again, but correct.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(), userMessage, e);","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" // If we tried converting to an integer but it\u0027s not a valid integer","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" String userMessage \u003d String.format(","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" \"%s is not a valid integer. Please consult your nearest mathematics textbook.\", numberAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(e.getMessage(),userMessage,e);","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":66}},{"path":"src/main/java/logic/taskhandling/ToDoHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import task.ToDo;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Encapsulation of an abstract class that handles the logic and input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * of ToDo(see task.ToDo) creation","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" * Includes handling of arguments into ToDo construction","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"public abstract class ToDoHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * Handles the creation of a ToDo from a list of arguments, including input validation","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @param taskList the taskList to place the new ToDo into","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied for the creation of a new ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this new ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception detailing what went wrong when we tried to make a ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" if (args.size() \u003e 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" // ToDo accepts only one argument -- Name","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too many args into ToDo, can only accept one,\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave %s arguments for this operation. That is forbidden.\",args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" } else if (args.size() \u003c 1) {","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" // one argument only!","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" String.format(\"%s is too few args into ToDo, can only accept one\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" String.format(\"You gave no task to add, what is the meaning of this?\", args.size()),","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" // extract from the arguments","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d args.get(0);","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" // make the ToDo","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" Task taskToAdd \u003d new ToDo(taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" //Chuck it into the list","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" taskList.add(taskToAdd);","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" // pass up what the user needs to see for feedback","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" return taskToAdd.toPrintString();","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":54}},{"path":"src/main/java/logic/taskhandling/UnmarkHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * Abstract class containing logic of marking a task as not done.","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public abstract class UnmarkHandler implements commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" * Marks a task as not done, and also performs input validation and checks if the operation makes sense.","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Calls MarkUnmarkHandler for most of the actual implementation.","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * @param taskList the tasklist to perform operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments supplied to mark as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string rep of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong with trying to mark this task as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList taskList, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" return MarkUnmarkHandler.handle(taskList,args,false);","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":24}},{"path":"src/main/java/logic/taskhandling/commandHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package logic.taskhandling;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * Interface that encapsulates an abstract class that handles specific commands","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Meant to be subclassed, this is just here as a template","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"public interface commandHandler {","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * Handle whatever command this is supposed to. Should not be actually called, is a template","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param tasklist the relevant tasklist to do operations on","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments to this command","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @return the String feedback that this command should return (like the string rep. of the task that was created)","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException An exception telling you this method should not (typically) be called directly.","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" public static String handle(TaskList tasklist, List\u003cString\u003e args) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" \"commandHandler.Handle called directly, not meant to be!\",","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" \"You\u0027re not meant to see this\",","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":28}},{"path":"src/main/java/parser/KniazCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package parser;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.util.List;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import java.util.Arrays;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a command given to Kniaz, should only be instantiated via KniazParser when it parses a command","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public class KniazCommand {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * The type of instruction this command contains -- Such as list, event, bye, etc.","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private KniazParser.InstructionType instruction;","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * the arguments given to this command","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" private List\u003cString\u003e args;","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Protected constructor -- This shouldn\u0027t be instantiated from areas outside the parser package","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param instruction the type of instruction this command contains","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @param args the arguments to the command","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" protected KniazCommand(KniazParser.InstructionType instruction, String... args) {","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" this.instruction \u003d instruction;","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" this.args \u003d Arrays.asList(args);","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" * whether this has a certain instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" * @param compareTo the instruction to comapre against","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * @return whether this command has the supplied instruction","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public boolean instructionEquals(KniazParser.InstructionType compareTo) {","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" return this.instruction.equals(compareTo);","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" * Getter method for the arguments in this command","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" * @return the arguments in this command, in list form","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" public List\u003cString\u003e getArgs() {","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" return args;","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":47}},{"path":"src/main/java/parser/KniazParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package parser;","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import exceptions.KniazRuntimeException;","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * Abstract class encapsulating logic of parsing \u0026 tokenizing commands given to Kniaz","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"public abstract class KniazParser {","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" // doesn\u0027t need to be instantiated to do its job","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" // contains just the logic for parsing input/outputs after Kniaz decides what kind of input it is","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" // helps keep Kniaz neat","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" * Valid pattern for Event commands","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * TODO : Implement similar regex for all commands","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" private static final String EVENTPATTERN \u003d \".*from.*to.*\";","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * The types of instructions that Kniaz can accept","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Each member of this enum has an alias, that represents the command typed into Kniaz","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * E.g. the DEADLINE InstructionType is related to the command \"deadline\".","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public enum InstructionType {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" TODO(\"todo\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" DEADLINE(\"deadline\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" EVENT(\"event\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" MARK(\"mark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" UNMARK(\"unmark\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" LIST(\"list\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" QUIT(\"bye\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" DELETE(\"delete\"),","lastModifiedDate":"2023-08-23"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" INVALID(\"\"); // placeholder for anything not recognised","lastModifiedDate":"2023-08-23"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public final String alias;","lastModifiedDate":"2023-08-23"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" private InstructionType(String alias){","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" this.alias \u003d alias;","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * Parses the given line and breaks it down into a KniazCommand","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * If an unknown instruction is entered, throws a KniazRunTimeException","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" * @param rawLine the line to parse","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" * @return the Command that line represented","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" * @throws KniazRuntimeException what went wrong, such as invalid commands","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" public static KniazCommand parseCommand(String rawLine) throws KniazRuntimeException {","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" String strippedLine \u003d rawLine.strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" // The lines below are fairly self-explanatory","lastModifiedDate":"2023-08-23"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" // Just checks for each alias in our enum and makes the right KniazCommand","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" // TODO : refactor this to get rid of the giant if-else ladder (if we can!)","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" if (strippedLine.equals(InstructionType.QUIT.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.QUIT);","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" if (strippedLine.equals(InstructionType.LIST.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand((InstructionType.LIST));","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":" // print out if we are asked to list","lastModifiedDate":"2023-08-23"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.MARK.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":70,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"xavierpok"},"content":" // handle parsing which entry the user wants to mark here","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.MARK.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":73,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.MARK, entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":76,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.UNMARK.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":77,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":78,"author":{"gitId":"xavierpok"},"content":" // handle parsing which entry user wants to unmark here","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.UNMARK.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.UNMARK, entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":82,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":83,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.DELETE.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":86,"author":{"gitId":"xavierpok"},"content":" //handle parsing which entry user wants to delete here","lastModifiedDate":"2023-08-23"},{"lineNumber":87,"author":{"gitId":"xavierpok"},"content":" String entryAsString \u003d KniazParser.getAfter(strippedLine,InstructionType.DELETE.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":88,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.DELETE,entryAsString);","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.TODO.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":92,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":93,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":94,"author":{"gitId":"xavierpok"},"content":" String taskName \u003d KniazParser.getAfter(strippedLine,InstructionType.TODO.alias).strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":95,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.TODO, taskName);","lastModifiedDate":"2023-08-23"},{"lineNumber":96,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":97,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.DEADLINE.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":98,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":99,"author":{"gitId":"xavierpok"},"content":" // pull the args for this command","lastModifiedDate":"2023-08-23"},{"lineNumber":100,"author":{"gitId":"xavierpok"},"content":" String deadlineArgs \u003d KniazParser.getAfter(strippedLine, InstructionType.DEADLINE.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":101,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"xavierpok"},"content":" String[] tokenizedDlineArgs \u003d deadlineArgs.split(\"\\\\s*/\\\\s*(by)\\\\s*\");","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"xavierpok"},"content":" // regex \\s* represents any arbitrary number of whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":104,"author":{"gitId":"xavierpok"},"content":" // Also strips the by out","lastModifiedDate":"2023-08-23"},{"lineNumber":105,"author":{"gitId":"xavierpok"},"content":" // so this split input strips whitespace in between delims","lastModifiedDate":"2023-08-23"},{"lineNumber":106,"author":{"gitId":"xavierpok"},"content":" // Split it up by the slash and strip whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":107,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.DEADLINE, tokenizedDlineArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":108,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":109,"author":{"gitId":"xavierpok"},"content":" } else if (strippedLine.startsWith(InstructionType.EVENT.alias)) {","lastModifiedDate":"2023-08-23"},{"lineNumber":110,"author":{"gitId":"xavierpok"},"content":" String eventArgs \u003d KniazParser.getAfter(strippedLine, InstructionType.EVENT.alias);","lastModifiedDate":"2023-08-23"},{"lineNumber":111,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":112,"author":{"gitId":"xavierpok"},"content":" if (!eventArgs.matches(KniazParser.EVENTPATTERN)) { //Handles format validation here for Events","lastModifiedDate":"2023-08-23"},{"lineNumber":113,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":114,"author":{"gitId":"xavierpok"},"content":" String.format(\"Wrong input format in %s\",eventArgs),","lastModifiedDate":"2023-08-23"},{"lineNumber":115,"author":{"gitId":"xavierpok"},"content":" \"Your input is formatted wrongly, try again.\",","lastModifiedDate":"2023-08-23"},{"lineNumber":116,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":117,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":118,"author":{"gitId":"xavierpok"},"content":" String[] tokenizedEventArgs \u003d eventArgs.split(\"\\\\s*/\\\\s*(from|to)\\\\s*\");","lastModifiedDate":"2023-08-23"},{"lineNumber":119,"author":{"gitId":"xavierpok"},"content":" // gets rid of the from/to also, in addition to splitting and stripping whitespace","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"xavierpok"},"content":" return new KniazCommand(InstructionType.EVENT, tokenizedEventArgs);","lastModifiedDate":"2023-08-23"},{"lineNumber":122,"author":{"gitId":"xavierpok"},"content":" } else {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"xavierpok"},"content":" throw new KniazRuntimeException(","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"xavierpok"},"content":" String.format(\"Unrecognised input : %s\", strippedLine),","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"xavierpok"},"content":" String.format(\"I did not recognise %s as an input, try again.\", strippedLine),","lastModifiedDate":"2023-08-23"},{"lineNumber":126,"author":{"gitId":"xavierpok"},"content":" null);","lastModifiedDate":"2023-08-23"},{"lineNumber":127,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":128,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":129,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":130,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":131,"author":{"gitId":"xavierpok"},"content":" * Helper function to get after a given substring","lastModifiedDate":"2023-08-23"},{"lineNumber":132,"author":{"gitId":"xavierpok"},"content":" * @param fullString full string to scan","lastModifiedDate":"2023-08-23"},{"lineNumber":133,"author":{"gitId":"xavierpok"},"content":" * @param subString what substring to look for","lastModifiedDate":"2023-08-23"},{"lineNumber":134,"author":{"gitId":"xavierpok"},"content":" * @return everything in fullString that comes after subString","lastModifiedDate":"2023-08-23"},{"lineNumber":135,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":136,"author":{"gitId":"xavierpok"},"content":" private static String getAfter(String fullString, String subString) {","lastModifiedDate":"2023-08-23"},{"lineNumber":137,"author":{"gitId":"xavierpok"},"content":" int indexOfSubString \u003d fullString.indexOf(subString);","lastModifiedDate":"2023-08-23"},{"lineNumber":138,"author":{"gitId":"xavierpok"},"content":" return fullString.substring(indexOfSubString + subString.length()).strip();","lastModifiedDate":"2023-08-23"},{"lineNumber":139,"author":{"gitId":"xavierpok"},"content":" // add the substring length to skip to the end of it","lastModifiedDate":"2023-08-23"},{"lineNumber":140,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":141,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":142,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"xavierpok":142}},{"path":"src/main/java/save/KniazLoader.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package save;","lastModifiedDate":"2023-08-28"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import parser.KniazParser;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.io.File;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a class to help load Kniaz tasklist data from disk.","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"public class KniazLoader {","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * The default path KniazLoader will try to save to","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" public static final String DEFAULT_PATH \u003d KniazSaver.DEFAULT_PATH;","lastModifiedDate":"2023-08-28"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Internal File object for reading","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" private File saveFile;","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" * Constructor for class. Makes a KniazLoader that will try to load from the provided path.","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" * @param path the path to save files to","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" public KniazLoader(String path) {","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" this.saveFile \u003d new File(path);","lastModifiedDate":"2023-08-28"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" * Constructor for class. Makes a KniazLoader that will try to load from provided path","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" public KniazLoader() {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" this(DEFAULT_PATH);","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" * Attempts to load saved TaskList from the location that was previously provided to this class,","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" * during construction","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" * @return the loaded TaskList","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" * @throws IOException If there is an error in I/O, typically caused by the file not existing at the location,","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" * which may be caused by this being the first ever session of Kniaz","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * @throws SecurityException If the security manager did not allow this class to read from file","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * @throws ClassNotFoundException If the data loaded did not have an entry for the class name.","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" * Typically caused by corruped data","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" public TaskList load() throws IOException, SecurityException, ClassNotFoundException {","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" if (!this.saveFile.exists()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" throw new IOException(String.format(\"%s does not exist\",this.saveFile.getAbsolutePath()));","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" if (!this.saveFile.canRead()) {","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" this.saveFile.setReadable(true);","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" // time to read it","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" FileInputStream fileInputStream \u003d new FileInputStream(this.saveFile);","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":" ObjectInputStream taskInputStream \u003d new ObjectInputStream(fileInputStream);","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":" return (TaskList) taskInputStream.readObject();","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"xavierpok":69}},{"path":"src/main/java/save/KniazSaver.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package save;","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import task.Task;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import task.TaskList;","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"import java.io.File;","lastModifiedDate":"2023-08-27"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2023-08-27"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a class to help save Kniaz tasklist data to disk.","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":"public class KniazSaver {","lastModifiedDate":"2023-08-27"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * The default path KniazSaver will try to save to","lastModifiedDate":"2023-08-28"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" public final static String DEFAULT_PATH \u003d \"./data/Kniaz.dat\";","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * Internal File object for writing","lastModifiedDate":"2023-08-28"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" private File saveFile;","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" * Constructor for class. Makes a KniazSaver that will try to save at the provided path.","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" * @param path the path to save files to","lastModifiedDate":"2023-08-28"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" public KniazSaver(String path) {","lastModifiedDate":"2023-08-27"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" this.saveFile \u003d new File(path);","lastModifiedDate":"2023-08-27"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * Constructor for class. Makes a KniazSaver that will try to save to DEFAULT_PATH","lastModifiedDate":"2023-08-28"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public KniazSaver() {","lastModifiedDate":"2023-08-27"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" this(DEFAULT_PATH);","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" * Saves the provided TaskList at the location this class was constructed with.","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" * @param taskList the TaskList to save to disk","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" * @throws java.io.IOException If there is an error with I/O,","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" * typically when an error occured in creating file or writing to file","lastModifiedDate":"2023-08-28"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" * @throws java.lang.SecurityException If the security manager did not allow this class to write to file","lastModifiedDate":"2023-08-28"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" *","lastModifiedDate":"2023-08-28"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" public void save(TaskList taskList) throws java.io.IOException,java.lang.SecurityException {","lastModifiedDate":"2023-08-27"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" if (!this.saveFile.getParentFile().exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" // Strictly speaking, do not need to wrap in an if.","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" // Makes directory if file does not exist","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" this.saveFile.getParentFile().mkdirs(); // may throw IOException","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" if (!this.saveFile.exists()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" // Also does not strictly need to be wrapped in an if block","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" // makes file if the file does not exist yet","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" this.saveFile.createNewFile(); // May throw IOException","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" if (!this.saveFile.canWrite()) {","lastModifiedDate":"2023-08-27"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":" // Again, does not strictly need to be wrapped","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":" // Attempt to allow access to write to the file if possible","lastModifiedDate":"2023-08-28"},{"lineNumber":63,"author":{"gitId":"xavierpok"},"content":" this.saveFile.setWritable(true); //May throw SecurityException","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":65,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":66,"author":{"gitId":"xavierpok"},"content":" // Below syntax handles setting up of streams to write","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"xavierpok"},"content":" FileOutputStream fileOutputStream \u003d new FileOutputStream(this.saveFile);","lastModifiedDate":"2023-08-27"},{"lineNumber":68,"author":{"gitId":"xavierpok"},"content":" ObjectOutputStream taskListOutputStream \u003d new ObjectOutputStream(fileOutputStream);","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":70,"author":{"gitId":"xavierpok"},"content":" // This line does the writing to the data file","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"xavierpok"},"content":" taskListOutputStream.writeObject(taskList);","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":73,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":74,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-27"},{"lineNumber":75,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":76,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"xavierpok":76}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a task with a singular deadline,","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * so has a name, completion status, and a time representing the deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * D for [D]eadline","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[D]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * String representing the deadline of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" private String deadlineTime \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" * Constructor for Deadline, setting name and time","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * @param deadlineName the name of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param deadlineTime the time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" public Deadline(String deadlineName, String deadlineTime) {","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" super(deadlineName, false);","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" this.deadlineTime \u003d deadlineTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Deadline, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(a Deadline), its name, when it is due, and whether it is done.","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" String postpend \u003d String.format(\"(by : %s)\",this.deadlineTime);","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" return Deadline.PREPEND + super.toPrintString() + postpend;","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":41}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" * E for [E]vent","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[E]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" * String representing whene this Event starts","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":" private String startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * String representing when this Event ends","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" private String endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * Constructor for Event, setting name, starting time, ending time","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param eventName the name of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @param startTime the starting time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" * @param endTime the ending time of this Deadline","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" public Event(String eventName, String startTime, String endTime) {","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" super(eventName, false);","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Event, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(an Event), its name, when it starts, when it ends, and whether it is done.","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this Deadline.","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" String postpend \u003d String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" \" from : %s to: %s\", this.startTime, this.endTime","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" ); //need a whitespace here for formatting reasons","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" return Event.PREPEND + super.toPrintString() + postpend;","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":45}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-27"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a single task to be done (by the user) in Kniaz","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"public abstract class Task implements Serializable {","lastModifiedDate":"2023-08-27"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * Whether this task is done","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * Name of this task","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" private String taskName \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" * The (protected) constructor for this task, mostly for inheritance by subclasses","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" * @param taskName name of task","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * @param isDone whether it is done","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" protected Task(String taskName, boolean isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" * Marks this task as done, does NOT check for if it was already done","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d true ;","lastModifiedDate":"2023-08-21"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" * Marks this task as not done, does NOT check for if it was already undone","lastModifiedDate":"2023-08-21"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" public void markAsUndone() {","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-21"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this Task, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * whether this task is done and its name","lastModifiedDate":"2023-08-21"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" String statusIcon \u003d \"\";","lastModifiedDate":"2023-08-21"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" if (this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":" statusIcon \u003d \"X\";","lastModifiedDate":"2023-08-21"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":" } else if (!this.isDone) {","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":" statusIcon \u003d \" \";","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":" return String.format(\"[%s] %s\", statusIcon, this.taskName);","lastModifiedDate":"2023-08-21"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":" // return in format [statusIcon] taskname","lastModifiedDate":"2023-08-21"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":61,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":62,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":62}},{"path":"src/main/java/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"import java.io.Serializable;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":" * Class encapsulating a list of Tasks, supports easy string representation, refer to Task for more details about","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" * what Tasks are.","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":"public class TaskList extends ArrayList\u003cTask\u003e implements Serializable {","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" // Parent constructor is (implicitly) used","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * Returns the user-facing string representation of TaskList,","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * which is a numbered list of the user-facing string representation of each Task,","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" * with a newline in between each entry","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" * @return the string representation of TaskList","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":" StringBuilder out \u003d new StringBuilder();","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" Task currTask \u003d this.get(i);","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" String newLine \u003d String.format(","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" \"%d. %s\\n\", i+1 , currTask.toPrintString());","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":" // User probably expects to start counting from 1 instead of 0","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" // so need to add 1 here","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":" out.append(newLine);","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":" return out.toString();","lastModifiedDate":"2023-08-21"},{"lineNumber":35,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":36,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":37,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":38,"author":{"gitId":"xavierpok"},"content":" * Marks a given task specified by index as done","lastModifiedDate":"2023-08-23"},{"lineNumber":39,"author":{"gitId":"xavierpok"},"content":" * @param index the index of the task to mark as done","lastModifiedDate":"2023-08-23"},{"lineNumber":40,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":41,"author":{"gitId":"xavierpok"},"content":" public void markAsUndone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":42,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":43,"author":{"gitId":"xavierpok"},"content":" this.get(index).markAsUndone();","lastModifiedDate":"2023-08-23"},{"lineNumber":44,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":45,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"xavierpok"},"content":" * Marks the given task specified by index as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"xavierpok"},"content":" * @param index the index of the task marked as not done","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-23"},{"lineNumber":50,"author":{"gitId":"xavierpok"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":52,"author":{"gitId":"xavierpok"},"content":" this.get(index).markAsDone();","lastModifiedDate":"2023-08-23"},{"lineNumber":53,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":54,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":55,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":56,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":57,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":58,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":59,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":60,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":60}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"package task;","lastModifiedDate":"2023-08-21"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"/**","lastModifiedDate":"2023-08-21"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":" * Encapsulates a Task that is a to-do, lacking a date and only containing a name and completion status","lastModifiedDate":"2023-08-21"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"public class ToDo extends Task {","lastModifiedDate":"2023-08-21"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":" * String to put at the front of string rep of this, represents the name,","lastModifiedDate":"2023-08-21"},{"lineNumber":11,"author":{"gitId":"xavierpok"},"content":" * T for [T]oDo","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":13,"author":{"gitId":"xavierpok"},"content":" private final static String PREPEND \u003d \"[T]\";","lastModifiedDate":"2023-08-21"},{"lineNumber":14,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":15,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":16,"author":{"gitId":"xavierpok"},"content":" * Constructor for a ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":17,"author":{"gitId":"xavierpok"},"content":" * @param toDoName the name of this ToDo","lastModifiedDate":"2023-08-21"},{"lineNumber":18,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":19,"author":{"gitId":"xavierpok"},"content":" public ToDo(String toDoName) {","lastModifiedDate":"2023-08-21"},{"lineNumber":20,"author":{"gitId":"xavierpok"},"content":" super(toDoName,false);","lastModifiedDate":"2023-08-21"},{"lineNumber":21,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":22,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":23,"author":{"gitId":"xavierpok"},"content":" /**","lastModifiedDate":"2023-08-21"},{"lineNumber":24,"author":{"gitId":"xavierpok"},"content":" * The user-facing string representation of this ToDo, containing information about","lastModifiedDate":"2023-08-21"},{"lineNumber":25,"author":{"gitId":"xavierpok"},"content":" * what kind of task this is(a ToDo), its name and whether it is done","lastModifiedDate":"2023-08-21"},{"lineNumber":26,"author":{"gitId":"xavierpok"},"content":" * @return the user-facing string representation of this ToDo.","lastModifiedDate":"2023-08-21"},{"lineNumber":27,"author":{"gitId":"xavierpok"},"content":" */","lastModifiedDate":"2023-08-21"},{"lineNumber":28,"author":{"gitId":"xavierpok"},"content":" @Override","lastModifiedDate":"2023-08-21"},{"lineNumber":29,"author":{"gitId":"xavierpok"},"content":" public String toPrintString() {","lastModifiedDate":"2023-08-21"},{"lineNumber":30,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":31,"author":{"gitId":"xavierpok"},"content":" return ToDo.PREPEND + super.toPrintString();","lastModifiedDate":"2023-08-21"},{"lineNumber":32,"author":{"gitId":"xavierpok"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":33,"author":{"gitId":"xavierpok"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":34,"author":{"gitId":"xavierpok"},"content":"}","lastModifiedDate":"2023-08-21"}],"authorContributionMap":{"xavierpok":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"xavierpok"},"content":"todo read book","lastModifiedDate":"2023-08-22"},{"lineNumber":2,"author":{"gitId":"xavierpok"},"content":"list","lastModifiedDate":"2023-08-22"},{"lineNumber":3,"author":{"gitId":"xavierpok"},"content":"deadline return book /by Sunday","lastModifiedDate":"2023-08-22"},{"lineNumber":4,"author":{"gitId":"xavierpok"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2023-08-22"},{"lineNumber":5,"author":{"gitId":"xavierpok"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"xavierpok"},"content":"test","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"xavierpok"},"content":"test2","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"xavierpok"},"content":"event bad event /to 4pm from 2pm","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"xavierpok"},"content":"delete 2","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"xavierpok"},"content":"bye","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"xavierpok":10}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"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":"xavierpok"},"content":"java -classpath ../bin Kniaz \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":{"xavierpok":1,"-":37}}] diff --git a/xavierpok_ip_master/commits.json b/xavierpok_ip_master/commits.json index 11c92310..b94e5878 100644 --- a/xavierpok_ip_master/commits.json +++ b/xavierpok_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"xavierpok":[{"date":"2023-08-20","commitResults":[{"hash":"8edc3a7d9952ab3327e1fe85148d9f98a7089eed","isMergeCommit":false,"messageTitle":"Implements Level 0 features of the Duke (Re-named to Kniaz for this version) chatbot. This refers to just renaming the chatbot, and implementing a skeletal version that greets the user and exits.","messageBody":"Adds two new private fields, LOGO and SEPERATOR, to help with this, which hold the logo and horizontal seperator lines respectively (Seperator lines are to help with formatting)\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":10}}},{"hash":"2235c7222b2b49581657e87f787ecd2d94b74737","isMergeCommit":false,"messageTitle":"Implements level 1 features \u0026 adds (public) constant fields.","messageBody":"Level 1 features just refers to echoing any input given by the user. Also adds a public field EXITSTRING which is the input that will cause Kniaz to exit. Adds private field EXITMESSAGE that is the message that prints on exit.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"64cb410ed17bd85d73d43b64a3a688a17207418d","isMergeCommit":false,"messageTitle":"Adds ability to store text entered by user and display back when requested","messageBody":"When a string that isn\u0027t interpreted as a command is input, adds it to internal storage. When list is input, displays the list. Note : \u0027bye\u0027 is retained as a command still.\n\nAlso adds a new private function to format this task list as a string.\n","tags":["Proto-Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":4}}},{"hash":"5d3ce9d71055c5a4e69bd79d26713cd4ec457bf3","isMergeCommit":false,"messageTitle":"Final version of Level 2","messageBody":"Makes edits to code formatting, functionality is the same. Redundant while statement amended to while(True), and System.out.println of String.format call amended to System.out.printf\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-21","commitResults":[{"hash":"19395e77781a58c792d61ad8b9fb61ef7c8796d0","isMergeCommit":false,"messageTitle":"Adds ability to mark/unmark tasks as done/undone with accompanying message. Adds Task and TaskList classes to encapsulate tasks, and lists of tasks respectively.","messageBody":"","tags":["Proto-Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":25}}},{"hash":"ea42ab472f0909c6bab2a2b1e7143e1007541a14","isMergeCommit":false,"messageTitle":"Documents additions in previous commit, tagged Proto-Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":15}}},{"hash":"1c4147be615c39d8f04c42e1d765c494bb313467","isMergeCommit":false,"messageTitle":"Implements ToDos, Deadlines and Events, as well as input/output (i.e. commands and printing to Kniaz\u0027s command line) for said tasks, and refactors Task printing slightly.","messageBody":"Feature expansion to hit Level 4.\n\nToDos are Tasks without dates/times, Deadlines are Tasks with a singular due date/times, Events are Tasks with a start/stop.\n\nAlso refactors Task to be an abstract class for ToDo to inherit from.\n\nThis is a slight shift of paradigm, as a Task would be something you need to do, but alone contains insufficient information.\n\nToDos lack time as it\u0027s just something the user has to do -- time isn\u0027t relevant here\n\nA deadline naturally has a due date.\n\nEvents in Kniaz are defined by start-stop in addition to the name, which is a natural abstraction of an event (Kniaz doesn\u0027t care about place (yet?))\n\nLastly, string representation to output of Tasks in Kniaz\u0027s output has been shifted from toString() to toPrintString(), to diffrentiate between input meant SOLELY for the user (which is toPrintString())\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":192,"deletions":35}}}]},{"date":"2023-08-22","commitResults":[{"hash":"aa05fdd9eb7a66ecd30a14409a19c0c99b793bc5","isMergeCommit":false,"messageTitle":"Patches user-facing string rep of Event, adding a whitespace in front of \"from\"","messageBody":"Needed to make it adhere closer to expected output, as no whitespace means \"from\" sticks to the previous string\n\nImproves output seen by user\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4edd8aa590021e40deb3e4e4f634949523b82df9","isMergeCommit":false,"messageTitle":"Patches user-facing string rep of Event, adding a whitespace in front of \"from\"","messageBody":"Needed to make it adhere closer to expected output, as no whitespace means \"from\" sticks to the previous string\n\nImproves output seen by user\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2dc0cdd489b3a2c4fe3ace396d0aff4f935e7c85","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b64b8b212320eb074c2cc9d88b09bcbfe37cb90d","isMergeCommit":false,"messageTitle":"Adds (single) semi-automated test case for use with runtest.sh","messageBody":"Allows for quick verification of input/output, comparing EXPECTED against input and actual output.\n\nExpected is to be updated with further edits to behaviour of Kniaz.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"062b4c493051750b3e93c57b0678b52c6932280b","isMergeCommit":false,"messageTitle":"Adds user error reporting, moves a significant amount of parsing and event logic out of Kniaz, and adds a new Exception, KniazRuntimeException","messageBody":"User error reporting is useful, as the user would naturally want to know what they did wrong.\n\nMoves parsing of commands into KniazParser, which now handles parsing of commands. It seperates commands into what kind of commands and their arguments\n\nMoves logic of commands into the logic.taskhandling package. The classes within take in the text-interface command arguments as Strings and work through the logic of how to operate on those. E.g., the ToDo name is passed to a ToDoHandler which decides what to do with this.\n\nMoving of parsing helps to keep Kniaz clean, and seperate how we decide to parse the command given to Kniaz seperate from the main Kniaz loop. This is important as there are many ways to parse arguments, and we might decide another way is better. This also allows for better exception handling, as Kniaz does not need to do input validation, and just passes it off to another class. All Kniaz has to do now is to grab whatever exception is thrown up and figure out what to do(Which is a lot easier!)\n\nSimilarly, for logic, we might decide to refactor it later, and this helps keep Kniaz clean. Notably, validation of the arguments provided can be handled seperately. For example, ToDo will only expect ONE argument, but the user might decide to provide two. Getting Kniaz or KniazParser to handle this borders on scope creep of what these classes are meant to do. Also offers similar benefits in exception handling as per the paragraph above about KniazParser.\n\nAddition of the new Exception is to support these new features. Notably, the addition of a seperate userMessage field supports two different exception reporting pipelines, to support good user experience. It\u0027s reasonable that more information might be needed to debug for future feature additions/refactors that might overwhelm or confuse the user, but a developer might find useful.\n\nModifies test cases to reflect the new change in behaviour\n","tags":["Level-5","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":410,"deletions":77},"sh":{"insertions":1,"deletions":1}}},{"hash":"332889531bee5f136a77dad7a4241b3965bae9fd","isMergeCommit":false,"messageTitle":"Documents code added in previous commit(Tagged Level-5), Converts all commandHandler classes in logic-\u003etaskhandling package to be abstract classes","messageBody":"Documentation was not done previously, this commit fixes that\n\nClasses should be abstract, as they contain only static methods and should not be instantiated.\n","tags":["Documents-Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":226,"deletions":35}}},{"hash":"78a3b735b71723515201aeca51722574b636939f","isMergeCommit":false,"messageTitle":"Updates test case","messageBody":"Amends and expands input.txt and EXPECTED.txt to be accurate to new features, including invalid input handling\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"70936e2f5385afb377ee8a0b1c20fdb73db87db0","isMergeCommit":false,"messageTitle":"Implements task deletion, and fixes formatting \u0026 documentation in TaskList, and adds whitespace stripping to parseCommand","messageBody":"DeleteHandler follows the same design pattern for the other commands, and additions in Kniaz and KniazParser are needed to accomodate the new command.\n\nAdding deletion is a useful feature because sometimes the user makes a mistake or wants to permanently delete a task to shorten the list\n\nAlso adds test case for demonstration of new behaviour\n\nparseCommand stripping whitespace brings it closer to user-expected behaviour because it\u0027s natural to expect that leading/trailing whitespaces would be ignored\n\nLastly, fixing of formatting and adding documentation is good because style guide and it\u0027s good to document\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":109,"deletions":17}}}]}]},"authorFileTypeContributionMap":{"xavierpok":{"java":1015,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"xavierpok":104405.586},"authorDisplayNameMap":{"xavierpok":"POK ..VIER"}} +{"authorDailyContributionsMap":{"xavierpok":[{"date":"2023-08-20","commitResults":[{"hash":"8edc3a7d9952ab3327e1fe85148d9f98a7089eed","isMergeCommit":false,"messageTitle":"Implements Level 0 features of the Duke (Re-named to Kniaz for this version) chatbot. This refers to just renaming the chatbot, and implementing a skeletal version that greets the user and exits.","messageBody":"Adds two new private fields, LOGO and SEPERATOR, to help with this, which hold the logo and horizontal seperator lines respectively (Seperator lines are to help with formatting)\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":10}}},{"hash":"2235c7222b2b49581657e87f787ecd2d94b74737","isMergeCommit":false,"messageTitle":"Implements level 1 features \u0026 adds (public) constant fields.","messageBody":"Level 1 features just refers to echoing any input given by the user. Also adds a public field EXITSTRING which is the input that will cause Kniaz to exit. Adds private field EXITMESSAGE that is the message that prints on exit.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":2}}},{"hash":"64cb410ed17bd85d73d43b64a3a688a17207418d","isMergeCommit":false,"messageTitle":"Adds ability to store text entered by user and display back when requested","messageBody":"When a string that isn\u0027t interpreted as a command is input, adds it to internal storage. When list is input, displays the list. Note : \u0027bye\u0027 is retained as a command still.\n\nAlso adds a new private function to format this task list as a string.\n","tags":["Proto-Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":4}}},{"hash":"5d3ce9d71055c5a4e69bd79d26713cd4ec457bf3","isMergeCommit":false,"messageTitle":"Final version of Level 2","messageBody":"Makes edits to code formatting, functionality is the same. Redundant while statement amended to while(True), and System.out.println of String.format call amended to System.out.printf\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-21","commitResults":[{"hash":"19395e77781a58c792d61ad8b9fb61ef7c8796d0","isMergeCommit":false,"messageTitle":"Adds ability to mark/unmark tasks as done/undone with accompanying message. Adds Task and TaskList classes to encapsulate tasks, and lists of tasks respectively.","messageBody":"","tags":["Proto-Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":25}}},{"hash":"ea42ab472f0909c6bab2a2b1e7143e1007541a14","isMergeCommit":false,"messageTitle":"Documents additions in previous commit, tagged Proto-Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":15}}},{"hash":"1c4147be615c39d8f04c42e1d765c494bb313467","isMergeCommit":false,"messageTitle":"Implements ToDos, Deadlines and Events, as well as input/output (i.e. commands and printing to Kniaz\u0027s command line) for said tasks, and refactors Task printing slightly.","messageBody":"Feature expansion to hit Level 4.\n\nToDos are Tasks without dates/times, Deadlines are Tasks with a singular due date/times, Events are Tasks with a start/stop.\n\nAlso refactors Task to be an abstract class for ToDo to inherit from.\n\nThis is a slight shift of paradigm, as a Task would be something you need to do, but alone contains insufficient information.\n\nToDos lack time as it\u0027s just something the user has to do -- time isn\u0027t relevant here\n\nA deadline naturally has a due date.\n\nEvents in Kniaz are defined by start-stop in addition to the name, which is a natural abstraction of an event (Kniaz doesn\u0027t care about place (yet?))\n\nLastly, string representation to output of Tasks in Kniaz\u0027s output has been shifted from toString() to toPrintString(), to diffrentiate between input meant SOLELY for the user (which is toPrintString())\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":192,"deletions":35}}}]},{"date":"2023-08-22","commitResults":[{"hash":"aa05fdd9eb7a66ecd30a14409a19c0c99b793bc5","isMergeCommit":false,"messageTitle":"Patches user-facing string rep of Event, adding a whitespace in front of \"from\"","messageBody":"Needed to make it adhere closer to expected output, as no whitespace means \"from\" sticks to the previous string\n\nImproves output seen by user\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"4edd8aa590021e40deb3e4e4f634949523b82df9","isMergeCommit":false,"messageTitle":"Patches user-facing string rep of Event, adding a whitespace in front of \"from\"","messageBody":"Needed to make it adhere closer to expected output, as no whitespace means \"from\" sticks to the previous string\n\nImproves output seen by user\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"2dc0cdd489b3a2c4fe3ace396d0aff4f935e7c85","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b64b8b212320eb074c2cc9d88b09bcbfe37cb90d","isMergeCommit":false,"messageTitle":"Adds (single) semi-automated test case for use with runtest.sh","messageBody":"Allows for quick verification of input/output, comparing EXPECTED against input and actual output.\n\nExpected is to be updated with further edits to behaviour of Kniaz.\n","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"062b4c493051750b3e93c57b0678b52c6932280b","isMergeCommit":false,"messageTitle":"Adds user error reporting, moves a significant amount of parsing and event logic out of Kniaz, and adds a new Exception, KniazRuntimeException","messageBody":"User error reporting is useful, as the user would naturally want to know what they did wrong.\n\nMoves parsing of commands into KniazParser, which now handles parsing of commands. It seperates commands into what kind of commands and their arguments\n\nMoves logic of commands into the logic.taskhandling package. The classes within take in the text-interface command arguments as Strings and work through the logic of how to operate on those. E.g., the ToDo name is passed to a ToDoHandler which decides what to do with this.\n\nMoving of parsing helps to keep Kniaz clean, and seperate how we decide to parse the command given to Kniaz seperate from the main Kniaz loop. This is important as there are many ways to parse arguments, and we might decide another way is better. This also allows for better exception handling, as Kniaz does not need to do input validation, and just passes it off to another class. All Kniaz has to do now is to grab whatever exception is thrown up and figure out what to do(Which is a lot easier!)\n\nSimilarly, for logic, we might decide to refactor it later, and this helps keep Kniaz clean. Notably, validation of the arguments provided can be handled seperately. For example, ToDo will only expect ONE argument, but the user might decide to provide two. Getting Kniaz or KniazParser to handle this borders on scope creep of what these classes are meant to do. Also offers similar benefits in exception handling as per the paragraph above about KniazParser.\n\nAddition of the new Exception is to support these new features. Notably, the addition of a seperate userMessage field supports two different exception reporting pipelines, to support good user experience. It\u0027s reasonable that more information might be needed to debug for future feature additions/refactors that might overwhelm or confuse the user, but a developer might find useful.\n\nModifies test cases to reflect the new change in behaviour\n","tags":["Level-5","A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":410,"deletions":77},"sh":{"insertions":1,"deletions":1}}},{"hash":"332889531bee5f136a77dad7a4241b3965bae9fd","isMergeCommit":false,"messageTitle":"Documents code added in previous commit(Tagged Level-5), Converts all commandHandler classes in logic-\u003etaskhandling package to be abstract classes","messageBody":"Documentation was not done previously, this commit fixes that\n\nClasses should be abstract, as they contain only static methods and should not be instantiated.\n","tags":["Documents-Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":226,"deletions":35}}},{"hash":"78a3b735b71723515201aeca51722574b636939f","isMergeCommit":false,"messageTitle":"Updates test case","messageBody":"Amends and expands input.txt and EXPECTED.txt to be accurate to new features, including invalid input handling\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"70936e2f5385afb377ee8a0b1c20fdb73db87db0","isMergeCommit":false,"messageTitle":"Implements task deletion, and fixes formatting \u0026 documentation in TaskList, and adds whitespace stripping to parseCommand","messageBody":"DeleteHandler follows the same design pattern for the other commands, and additions in Kniaz and KniazParser are needed to accomodate the new command.\n\nAdding deletion is a useful feature because sometimes the user makes a mistake or wants to permanently delete a task to shorten the list\n\nAlso adds test case for demonstration of new behaviour\n\nparseCommand stripping whitespace brings it closer to user-expected behaviour because it\u0027s natural to expect that leading/trailing whitespaces would be ignored\n\nLastly, fixing of formatting and adding documentation is good because style guide and it\u0027s good to document\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":109,"deletions":17}}}]},{"date":"2023-08-27","commitResults":[{"hash":"39cb07556bf46f4581064868e29649ab7efeead0","isMergeCommit":false,"messageTitle":"Implement saving","messageBody":"Currently, Kniaz forgets all data on new session\n\nLet it save to remember from previous session.\n","tags":["Saving"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":1}}}]},{"date":"2023-08-28","commitResults":[{"hash":"a9c7aacc5917b29c51c456731c7bfa3675aba531","isMergeCommit":false,"messageTitle":"Implement loading on Kniaz start","messageBody":"Previous commit tagged Saving only saves, does not load\n\nSaving only makes sense if Kniaz loads saved data\n","tags":["Loading"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":10}}},{"hash":"a75de4dda04b579ce247ebff744404d1d2298adb","isMergeCommit":false,"messageTitle":"Write javadoc strings for commits tagged Saving, Loading","messageBody":"Previous commits implemented functionality, lacked javadoc strings.\n\nDocumentation is good.\n","tags":["Level-7","Documents-Saving-Loading"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":9}}},{"hash":"d6e3967c81cd09beea7eba545506e9dd7c9d0a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"xavierpok":{"java":1198,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"xavierpok":68687.98},"authorDisplayNameMap":{"xavierpok":"POK ..VIER"}} diff --git a/zannloo_ip_master/commits.json b/zannloo_ip_master/commits.json index f03f4c0c..eb506f24 100644 --- a/zannloo_ip_master/commits.json +++ b/zannloo_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"zannloo":[{"date":"2023-08-20","commitResults":[{"hash":"76e343f4a010c3e32350a774fab484e9df622f1f","isMergeCommit":false,"messageTitle":"add TehO.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}}]},{"date":"2023-08-21","commitResults":[{"hash":"a0134a82c33662fd544c065fca4b37815fc6e156","isMergeCommit":false,"messageTitle":"Improved TehO by allowing it echo commands entered by user and exit with command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"438506fe459fe397424484cfcc5b22187b8d54a8","isMergeCommit":false,"messageTitle":"added methods addTask and listTask to TehO.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-22","commitResults":[{"hash":"05bde19cd1df5ec1a33f1ac3cb8afe5835536fc5","isMergeCommit":false,"messageTitle":"added new methods to mark and unmark tasks in TehO.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"4f2034be832c5e010f72d68868813c9539ce1d40","isMergeCommit":false,"messageTitle":"add 3 new class that inherit from Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"fa8d6fa781af0d1ed1859f3c42790ebac1dc9a50","isMergeCommit":false,"messageTitle":"add Task.java (for lvl3) and separated toString() method and getStatusIcon() method","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":3}}},{"hash":"190ef8c9214af663d4e2f7b4c5614202ffeaeaf9","isMergeCommit":false,"messageTitle":"included todo, deadline and event (incompleted)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"10415eb7d42e68c3587943381f9020c133eaa4f2","isMergeCommit":false,"messageTitle":"add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":17}}}]},{"date":"2023-08-23","commitResults":[{"hash":"4d0cb552c8edc499da2721b700cafbe26c46dddf","isMergeCommit":false,"messageTitle":"Use Exceptions to handle two types of errors shown in the example (Minimal).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30}}},{"hash":"46a036f6353c9f3d3f5ee4562b6fe1244ad0d887","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and switching to ArrayList. (draft1)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"da04e8f5b78f46a1b50480ff690f06bbe485dd0d","isMergeCommit":false,"messageTitle":"reverting back to Lvl4 because I missed out A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":44,"deletions":123}}},{"hash":"20cf165ed0c44391a914573b41396bba400a44fb","isMergeCommit":false,"messageTitle":"editing the runtest.sh for test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"sh":{"insertions":3,"deletions":7}}},{"hash":"ae7e6fb1cc412a56fb9246d52f7c5239923dc533","isMergeCommit":false,"messageTitle":"Use Expressions to handle two types of errors shown in the website.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30},"bat":{"insertions":1,"deletions":1}}},{"hash":"007e48e53b36477323fa9a676144ef9439a3e5b8","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and switching to ArrayList (draft1).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":17}}},{"hash":"97c54987f17ee00a64c25a1c110733c9bf861dfc","isMergeCommit":false,"messageTitle":"added the close scanner method (draft 2 of lvl6)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":33}}},{"hash":"806702a2f4380b76b56116bfdf7fcb1991f18d3e","isMergeCommit":false,"messageTitle":"lvl 6 draft 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":71}}},{"hash":"716f8737a7e2f2d3f825ff629e970e7159676dd1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and corrected old mistakes of not showing the time.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":20}}},{"hash":"62d6780ca79c433ca98352b49bd27a6d2b4d2abd","isMergeCommit":false,"messageTitle":"last edits for Level 6.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"87e9f2bb29b37e2764557fcacc0b25f4562cba3b","isMergeCommit":false,"messageTitle":"final changes and adding the @Override","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"9d5c38d7c2ce0ace36bde6174363bc3b0d5f0943","isMergeCommit":false,"messageTitle":"Add teho.txt","messageBody":"TehO class: Update to enable saving of tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":94,"deletions":12}}},{"hash":"29e1785d2083ba8286f931acd6ddc88b51b584fe","isMergeCommit":false,"messageTitle":"Unsure if the previous reverted commit was undone","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":7,"deletions":4}}},{"hash":"42eecabb97d61231dbc790bb6dc00ff238f5e4b2","isMergeCommit":false,"messageTitle":"Store and accept date in a new format","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":25,"deletions":14}}},{"hash":"773bd8c3ab07a7991701508a84b9ef5b37d54b57","isMergeCommit":false,"messageTitle":"Update to have more OOP","messageBody":"Add Ui class: deals with interactions with the user\nAdd Storage class: deals with loading tasks from the file and saving tasks in the file\nAdd Parser class: deals with making sense of the user command\nAdd TaskList class: contains the task list e.g., it has operations to add/delete tasks in the list\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":191,"deletions":110}}},{"hash":"2f4d884bf00e6d2886da57b931153d8e6e45e173","isMergeCommit":false,"messageTitle":"Organize classes into 2 packages, teho.exceptions and teho.main","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"zannloo":{"java":452,"md":0,"fxml":0,"sh":2,"bat":1,"gradle":0,"txt":6}},"authorContributionVariance":{"zannloo":67525.4},"authorDisplayNameMap":{"zannloo":"CS2103T-W15-2 LOO ..ZANN"}} +{"authorDailyContributionsMap":{"zannloo":[{"date":"2023-08-20","commitResults":[{"hash":"76e343f4a010c3e32350a774fab484e9df622f1f","isMergeCommit":false,"messageTitle":"add TehO.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}}]},{"date":"2023-08-21","commitResults":[{"hash":"a0134a82c33662fd544c065fca4b37815fc6e156","isMergeCommit":false,"messageTitle":"Improved TehO by allowing it echo commands entered by user and exit with command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"438506fe459fe397424484cfcc5b22187b8d54a8","isMergeCommit":false,"messageTitle":"added methods addTask and listTask to TehO.java","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":1}}}]},{"date":"2023-08-22","commitResults":[{"hash":"05bde19cd1df5ec1a33f1ac3cb8afe5835536fc5","isMergeCommit":false,"messageTitle":"added new methods to mark and unmark tasks in TehO.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":7}}},{"hash":"4f2034be832c5e010f72d68868813c9539ce1d40","isMergeCommit":false,"messageTitle":"add 3 new class that inherit from Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"fa8d6fa781af0d1ed1859f3c42790ebac1dc9a50","isMergeCommit":false,"messageTitle":"add Task.java (for lvl3) and separated toString() method and getStatusIcon() method","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":3}}},{"hash":"190ef8c9214af663d4e2f7b4c5614202ffeaeaf9","isMergeCommit":false,"messageTitle":"included todo, deadline and event (incompleted)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"10415eb7d42e68c3587943381f9020c133eaa4f2","isMergeCommit":false,"messageTitle":"add support for tracking three types of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":17}}}]},{"date":"2023-08-23","commitResults":[{"hash":"4d0cb552c8edc499da2721b700cafbe26c46dddf","isMergeCommit":false,"messageTitle":"Use Exceptions to handle two types of errors shown in the example (Minimal).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30}}},{"hash":"46a036f6353c9f3d3f5ee4562b6fe1244ad0d887","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and switching to ArrayList. (draft1)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":20}}},{"hash":"da04e8f5b78f46a1b50480ff690f06bbe485dd0d","isMergeCommit":false,"messageTitle":"reverting back to Lvl4 because I missed out A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":44,"deletions":123}}},{"hash":"20cf165ed0c44391a914573b41396bba400a44fb","isMergeCommit":false,"messageTitle":"editing the runtest.sh for test using the I/O redirection technique","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"sh":{"insertions":3,"deletions":7}}},{"hash":"ae7e6fb1cc412a56fb9246d52f7c5239923dc533","isMergeCommit":false,"messageTitle":"Use Expressions to handle two types of errors shown in the website.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30},"bat":{"insertions":1,"deletions":1}}},{"hash":"007e48e53b36477323fa9a676144ef9439a3e5b8","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and switching to ArrayList (draft1).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":17}}},{"hash":"97c54987f17ee00a64c25a1c110733c9bf861dfc","isMergeCommit":false,"messageTitle":"added the close scanner method (draft 2 of lvl6)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":33}}},{"hash":"806702a2f4380b76b56116bfdf7fcb1991f18d3e","isMergeCommit":false,"messageTitle":"lvl 6 draft 3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":71}}},{"hash":"716f8737a7e2f2d3f825ff629e970e7159676dd1","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list and corrected old mistakes of not showing the time.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":20}}},{"hash":"62d6780ca79c433ca98352b49bd27a6d2b4d2abd","isMergeCommit":false,"messageTitle":"last edits for Level 6.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":7}}}]},{"date":"2023-08-24","commitResults":[{"hash":"87e9f2bb29b37e2764557fcacc0b25f4562cba3b","isMergeCommit":false,"messageTitle":"final changes and adding the @Override","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"9d5c38d7c2ce0ace36bde6174363bc3b0d5f0943","isMergeCommit":false,"messageTitle":"Add teho.txt","messageBody":"TehO class: Update to enable saving of tasks\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":94,"deletions":12}}},{"hash":"29e1785d2083ba8286f931acd6ddc88b51b584fe","isMergeCommit":false,"messageTitle":"Unsure if the previous reverted commit was undone","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":7,"deletions":4}}},{"hash":"42eecabb97d61231dbc790bb6dc00ff238f5e4b2","isMergeCommit":false,"messageTitle":"Store and accept date in a new format","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":25,"deletions":14}}},{"hash":"773bd8c3ab07a7991701508a84b9ef5b37d54b57","isMergeCommit":false,"messageTitle":"Update to have more OOP","messageBody":"Add Ui class: deals with interactions with the user\nAdd Storage class: deals with loading tasks from the file and saving tasks in the file\nAdd Parser class: deals with making sense of the user command\nAdd TaskList class: contains the task list e.g., it has operations to add/delete tasks in the list\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":191,"deletions":110}}},{"hash":"2f4d884bf00e6d2886da57b931153d8e6e45e173","isMergeCommit":false,"messageTitle":"Organize classes into 2 packages, teho.exceptions and teho.main","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":1}}}]},{"date":"2023-08-28","commitResults":[{"hash":"c4d4f5dfb95cbeb4ec485edd39fbf715f2dc3dc8","isMergeCommit":true,"messageTitle":"Merge commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027","messageBody":"* commit \u0027ed6d4d25bd4e34461919ffe785a6f10f4c087552\u0027:\n Bump gradle and lib version\n Add Gradle support\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"zannloo":{"java":452,"md":0,"fxml":0,"sh":2,"bat":1,"gradle":0,"txt":6}},"authorContributionVariance":{"zannloo":63346.727},"authorDisplayNameMap":{"zannloo":"CS2103T-W15-2 LOO ..ZANN"}}